2012-03-08 51 views
0

我在網格視圖中有一個日期框用戶控件,其中一個屬性是RowID。從GridView的我傳遞的行ID的datebox爲網格視圖中的用戶控件

<uc2:datePage1 ID="txtSubToSA" RowID=<%# Container.DataItemIndex %> runat="server" Enabled="true" Text= '<%#Eval("SUBMITTED_TO_SA") %>' /> 

在我添加屬性,這樣調用javascript函數的用戶控件的頁面加載:

protected void Page_Load(object sender, EventArgs e) 
    { 

     txtDate.Attributes.Add("onchange", "getRow(" + RowID + ")"); 

    } 
    public int RowID 
     { 
      get; 
      set; 
     } 

現在,當我做出改變在gridview的日期框中,無論它是什麼行,它總是給出RowID爲0,並且不識別我在其他行中所做的更改。我在這裏做錯了什麼?

回答

0

您要添加的Load事件處理onchange屬性,以前RowId已定 - 這將綁定在happend。也許你可以重寫DataBind並設置屬性綁定完成後:

public override void DataBind() 
{ 
    base.DataBind(); 
    txtDate.Attributes.Add(...); 
} 
+0

你是指用戶控件或Gridview的DataBind? Usercontrol是一個簡單的文本框和ajax控制日曆擴展器。此用戶控件用於gridview的各個列中。我想在文本框用戶控件值的文本被更改的行上觸發onchange事件。 – user799891 2012-03-08 18:50:11

+0

我通過設置屬性中的屬性而不是頁面加載來解決此問題。謝謝你的提示!這是我做的,它的工作。 'code'public int RowID { set { txtDate.Attributes.Add(「onchange」,「getRow(」+ value +「)」); } } – user799891 2012-03-08 19:05:56

+0

@ user799891 - 我的意思是UserControl的'DataBind'方法 - 您需要在UserControl中才能訪問txtDate。但是,在屬性設置器中添加屬性的解決方案也會起作用 - 可能是更好的解決方案,因爲如果以編程方式設置RowId,而不是使用數據綁定,則它將工作。 – Joe 2012-03-08 19:20:39

0

你可以改爲嘗試這一點 - 從

protected void Page_Load(object sender, EventArgs e) 
{ 
    txtDate.Attributes.Add("onchange", "getRow(" + RowID + ")"); 
} 

移動代碼

protected void Page_LoadComplete(object sender, EventArgs e) 
{ 
    txtDate.Attributes.Add("onchange", "getRow(" + RowID + ")"); 
} 

頁面加載完成數據加載後觸發事件。

相關問題