2016-05-04 17 views
1

私はイベントを(textchanged)テキストボックスに添付する必要があるシナリオを持っています。コードが "code2"の場合にのみトリガする必要があります。下記のコードを確認してください。 value_TextChangedがトリガされません。イベントをグリッドビュー内の特定のコントロールに追加します

<asp:GridView runat="server" ID="gv1" AutoGenerateColumns="false" 
      onrowcreated="gv1_RowCreated1" > 
    <Columns> 
    <asp:TemplateField> 
    <ItemTemplate> 
    <asp:Label runat="server" ID="code" Text='<%# Bind("[code]") %>'></asp:Label> 
    </ItemTemplate> 
    </asp:TemplateField> 
    <asp:TemplateField> 
    <ItemTemplate> 
    <asp:TextBox runat="server" ID="val" Text='<%# Bind("[value]") %>'></asp:TextBox> 
    </ItemTemplate> 
    </asp:TemplateField> 
    </Columns> 
    </asp:GridView> 

protected void Page_Load(object sender, EventArgs e) 
     { 
      if (!Page.IsPostBack) 
      { 
       DataBind(); 
      } 
     } 

     void DataBind() 
     { 
      DataTable dt = new DataTable(); 
      dt.TableName = "tb1"; 
      dt.Columns.Add("code"); 
      dt.Columns.Add("value"); 
      dt.Rows.Add("code1", "Red"); 
      dt.Rows.Add("code2", "Green"); 
      dt.Rows.Add("code3", "Blue"); 
      gv1.DataSource = dt; 
      gv1.DataBind(); 
     } 

     protected void gv1_RowCreated1(object sender, GridViewRowEventArgs e) 
     { 
      if (e.Row.RowType == DataControlRowType.DataRow) 
      { 
       string code = (String)DataBinder.Eval(e.Row.DataItem, "code"); 
       TextBox value = (TextBox)e.Row.FindControl("val"); 
       if (code == "code2") 
       { 
        value.AutoPostBack = true; 
        value.TextChanged += new EventHandler(value_TextChanged); 
       } 
      } 
     } 

     void value_TextChanged(object sender, EventArgs e) 
     { 
      throw new NotImplementedException(); 
     } 
+0

あなたが変更 'TextBox'の' Text'を試してみました際にトリガされます* code2 *で? – bit

答えて

0

あなたのマークアップでAutoPostBack="true"を追加する必要がありますTextChangeをトリガするには、 TextChangeでイベントをアタッチする場合は、マークアップで指定できるgv1_RowCreatedに依存する必要はありません。

<asp:TextBox AutoPostBack="true" OnTextChanged="value_TextChanged" 
runat="server" ID="val" Text="" ></asp:TextBox> 

もう一つのことに注意してください、このイベントは、行が作成された後てtextBox 損失その焦点

+0

こんにちは、お返事ありがとうございます。私は、AutoPostBackをcode2でtrueに設定する必要があります。 – Chris

関連する問題