2012-01-04 4 views
1

私はこれらの両方がグリッドビューの子コントロールであるリンクボタンをクリックすると、テキストボックスコントロールを非表示にする方法はありますか?

<asp:GridView ID="dgTask" runat="server" Width="100%" 
      AutoGenerateColumns="False" onrowdatabound="dgTask_RowDataBound"> 
      <Columns> 
       <asp:BoundField DataField="TaskID" HeaderText="TaskID" ItemStyle-Width="1%" /> 
       <asp:BoundField DataField="TaskName" HeaderText="Task Name" ItemStyle-HorizontalAlign="left" 
        ItemStyle-Width="10%" /> 
       <asp:BoundField DataField="PriorityName" HeaderText="Priority" ItemStyle-HorizontalAlign="center" 
        ItemStyle-Width="10%" /> 
       <asp:BoundField DataField="StatusName" HeaderText="Status" ItemStyle-HorizontalAlign="center" 
        ItemStyle-Width="10%" /> 
       <asp:TemplateField HeaderText="Edit Task" ItemStyle-Width="10%"> 
        <ItemTemplate> 
         <asp:LinkButton ID="lnkBtnEdit" runat="Server" Text="Edit" CommandArgument ='<%# Eval("TaskID") %>' /> 
         <asp:TextBox ID="txtId" runat="server"></asp:TextBox> 
        </ItemTemplate> 
       </asp:TemplateField> 
      </Columns> 
     </asp:GridView> 

下のようにグリッドビューを持って、私は何を持っていることのLinkBut​​tonのクリックイベントに、私はその行のテキストボックスコントロールを非表示にする必要があるということです。

どうすればよいですか?

は、これまでのところ私はちょうどjavascript関数を呼び出すことで軽微な変更を行っても、以下のようにJavaScript関数を追加し、

protected void dgTask_RowDataBound(object sender, GridViewRowEventArgs e) 
    { 
     if (e.Row.RowType == DataControlRowType.DataRow) 
     { 
      LinkButton btnEdit = (LinkButton)e.Row.Cells[4].FindControl("lnkBtnEdit"); 
      btnEdit.Attributes.Add("onclick", "return Test();"); 
     } 
    } 

下のおかげ

答えて

1

あなたは正しい軌道に乗っているように行われています。

protected void dgTask_RowDataBound(object sender, GridViewRowEventArgs e) 
    { 
     if (e.Row.RowType == DataControlRowType.DataRow) 
     { 
      LinkButton btnEdit = (LinkButton)e.Row.Cells[4].FindControl("lnkBtnEdit"); 
      TextBox txtId = (TextBox)e.Row.Cells[4].FindControl("txtId"); 
      btnEdit.Attributes.Add("onclick", "return Test("'" + txtId.ClientId + "'");"); 
     } 
    } 

そして、この方法のようにJavascriptを追加

function Test(var txtId) 
{ 
    var inputtxt = document.getElementById(txtId); 
    if(inputtxt != null) 
    { 
     inputtxt.Attributes.Add("style","display:none;"); 
    } 

} 
0

これを試してみてください。

protected void LinkButton1_Click(object sender, EventArgs e) 
    { 
     LinkButton b = (LinkButton)sender; 
     GridViewRow r = (GridViewRow)b.NamingContainer; 
     ((TextBox)(GridView1.Rows[r.RowIndex].Cells[0].FindControl("TextBox1"))).Visible = false; 
    } 
関連する問題