将gridview文本框的值设置为按钮的命令参数

时间:2014-06-04 06:13:59

标签: c# asp.net gridview

这是我的网格视图

<asp:GridView ID="grvClaimBanks" runat="server" AutoGenerateColumns="false" AllowPaging="false" OnRowCommand="grvClaimBanks_RowCommand">
<Columns>

 <asp:TemplateField HeaderText="Sr.No">
  <ItemTemplate>
    <%#Container.DataItemIndex +1  %>
  </ItemTemplate>                                            
 </asp:TemplateField>

 <asp:TemplateField HeaderText="ID">
  <ItemTemplate>
    <asp:TextBox ID="txtMoratoriumPeroid" runat="server"> 
  </ItemTemplate>                                            
 </asp:TemplateField>

 <asp:TemplateField HeaderText="Action">
  <ItemTemplate>
   <asp:LinkButton ID="lnkEditProduction" runat="server" CommandArgument='<%# Eval("TextileSLACId") %>' CommandName="EnterClaim" Text="Enter Claim" CausesValidation="false"></asp:LinkButton>
  </ItemTemplate>                                           
 </asp:TemplateField>

</Columns>

现在我要设置&#34; txtMoratoriumPeroid&#34;的值as&#34; CommandArgument&#34; of&#34; lnkEditProduction&#34;,所以我可以在网格视图的行命令事件中访问该值。

这可能吗?

如果是,请帮助......

2 个答案:

答案 0 :(得分:1)

绑定TextBox的方式不会让客户端的值发生变化,而服务器端的TextBox似乎为空。您可以在RowCommand事件中获取当前row命令按钮,并查找TextBox以获取其值。

GridViewRow row = (GridViewRow)(((Control)e.CommandSource).NamingContainer);
TextBox txtMoratoriumPeroid= row.FindControl("txtMoratoriumPeroid") as TextBox;
if(txtMoratoriumPeroid != null)
{
    //Your code here.
    string txtMoratoriumPeroidText =  txtMoratoriumPeroid.Text; 
}

答案 1 :(得分:1)

不可以动态提供动态CommandArgument。 但你可以通过

实现这一目标
LinkButton lbtnSender = (LinkButton)sender;
TextBox txtMoratoriumPeroid = (TextBox)lbtnSender.Parent.Parent.FindControl("txtMoratoriumPeroid");
string MoratoriumPeroid = txtMoratoriumPeroid.Text;