簡體   English   中英

只有在以下情況下,EditItemTemplate內部的控件才可以在Page_Load()中使用:

[英]Control inside EditItemTemplate will be available in Page_Load() only if


在我的頁面上,我定義了控件TextBox1,Label1和GridView1。 在GridView1內部,我定義了以下模板:

           <asp:TemplateField>

              <ItemTemplate>
                <asp:LinkButton runat="server" Text="Edit" CommandName="Edit" ID="cmdEdit" />         
              </ItemTemplate>

              <EditItemTemplate>
                <asp:TextBox Text='<%# Bind("Notes") %>' runat="server" id="textBoxNotes" />
                <br /><br />
                <asp:LinkButton runat="server" Text="Update" 
                 CommandName="Update" ID="cmdUpdate" /> 
                <asp:LinkButton runat="server" Text="Cancel" 
                 CommandName="Cancel" ID="cmdCancel" />
              </EditItemTemplate>

            </asp:TemplateField>

如果用戶在textBoxNotes中輸入文本並單擊cmdUpdate按鈕,則在回發時,當調用Page_Load()時,此文本將已可用。


因此,如果用戶在單擊更新按鈕cmdUpdate之前還向TextBox1輸入了字符串“ something”,則以下代碼將提取用戶輸入到textBoxNotes中的文本

    protected void Page_Load(object sender, EventArgs e)
    {
        if(TextBox1.Text=="text from Notes")
        Label1.Text =((TextBox)gridEmployees.Rows[0].Cells[0].FindControl("textBoxNotes")).Text;
    }


A)以下代碼也應該提取輸入到textBoxNotes中的文本用戶,但是當我單擊cmdEdit按鈕時,我得到“對象引用未設置為對象的實例。”異常

    protected void Page_Load(object sender, EventArgs e)
    {
        if(IsPostBack)
        Label1.Text =((TextBox)gridEmployees.Rows[0].Cells[0].FindControl("textBoxNotes")).Text;
    }

為什么會出現此異常? 似乎textBoxNotes不存在。 但是為什么不存在呢?


謝謝

您在Page_Load中引用的方式是在gridview的行實際存在之前發生的。 因為它發生在PostBack上,所以必須從ViewState重新創建GridView(和觸發事件)(re:填充其行)。 初始化頁面上的對象並填充其值后,尚未重新創建GridView且未觸發其事件。

如博士所說,這應該在RowUpdating事件中完成。

發生Update事件時,該行不再處於編輯模式。 因此,textBoxNotes在頁面上不存在。 使用gridview的RowUpdating事件處理程序訪問編輯模板控件。

public void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
     TextBox1.Text = ((TextBox)GridView1.Rows[e.RowIndex]
                              .FindControl("textBoxNotes")).Text;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM