2011-12-30 10 views
0

ユーザーコントロールのプロパティBEFORE PreRenderの値にアクセスする必要がある場合は、既存のデータコントロールのいずれかをカスタムコントロールから外す必要がありますリピート、リストビューなど)?ASP.NETコントロールの親コントロールのフィールドの1つにバインドするプロパティ

ユーザーコントロールの1つに、ユーザーコントロールのプロパティに基づいて構成されたgridviewコントロールがあります。主要なプロパティのいくつかは、基礎となるレコードソースのSQL文を変更します。私は今、SQLステートメントのWHEREステートメントを設定するプロパティが、ユーザーコントロールの親FormViewの値に関連付けられている必要がある状況にあります。 formviewを顧客の詳細レコードを表示するものと考えてください。ユーザーコントロールは、顧客の口座番号を取得し、顧客連絡先名などの関連テーブルのデータを表示します。グリッドビューはコントロールのプレレンダリングイベントの前に作成されるため、プレレンダリングイベント内での作業は効率的ではありません。

基準として、この質問を参照してください: Stumped With Custom Property on User Control

+0

ユーザーコントロールのプリレンダーイベントの前に親コントロールからコントロールに渡される値にアクセスできるように、コントロール(ListView、GridViewなど)を拡張する必要があると言っていますか?ここでは、<編集テンプレート>

ASPX - マークアップ

<%@ Page Language="VB" AutoEventWireup="false" CodeFile="VbDefault2.aspx.vb" Inherits="usercontrols_VbDefault2" %> 
<%@ Register src="TestIt.ascx" tagname="TestIt" tagprefix="uc1" %> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head runat="server"> 
    <title></title> 
</head> 
<body> 
    <form id="form1" runat="server"> 
    <div> 

     <asp:FormView ID="FormView1" runat="server" AllowPaging="True"> 
      <ItemTemplate> 
       No : 
       <uc1:TestIt ID="TestIt1" runat="server" No='<%#Eval("No") %>' 
        ClientIDMode="AutoID" /> 
       <br /> 
       Square : 
       <asp:Label ID="Label2" runat="server" ></asp:Label> 
      </ItemTemplate> 
     </asp:FormView> 
    </div> 
    </form> 
</body> 
</html> 

ASPX.vb

Partial Class usercontrols_VbDefault2 
    Inherits System.Web.UI.Page 
    Public Class TestData 
     Public Property No As Integer 
    End Class 
    Protected Sub Page_Load(sender As Object, e As System.EventArgs) Handles Me.Load 
     If Not IsPostBack Then 
      BindData() 
     End If 
    End Sub 
    Sub BindData() 
     Dim nos As New List(Of TestData) 
     nos.Add(New TestData() With {.No = 10}) 
     nos.Add(New TestData() With {.No = 20}) 

     FormView1.DataSource = nos 
     FormView1.DataBind() 
    End Sub 
    Protected Sub FormView1_PageIndexChanging(sender As Object, e As System.Web.UI.WebControls.FormViewPageEventArgs) Handles FormView1.PageIndexChanging 
     FormView1.PageIndex = e.NewPageIndex 
     BindData() 
    End Sub 
End Class 
関連する問題