2013-03-19 96 views
-1

我在网格中显示的数据如下:如何在同一行中单击按钮时读取该行的数据

起始日期结束日期按钮

16/3/2013三分之一十七/ 2013注册--->这是一个ASP按钮

18/3/2013 19/3/2012注册---->这是一个ASP按钮

20/3/2012 20/3/2012注册---->这是一个ASP按钮

我想用c#代码的asp.net,当我点击第一行注册按钮时,我想获取第一行的数据。如果点击第二行,我只想要第二行的数据startdate和结束时间。我该如何实现这个目标?请在这方面帮助我。

+0

你能否提供你的页面代码看起来像确保你得到一个合适的答案? (e.CommandName ==“SignUp”) – 2013-03-19 20:01:20

回答

0

在ASP按钮,设置属性:的CommandName = “注册” CommandArgument = '<%#Container.DataItemIndex%>'

现在,当单击此按钮,它调用GridView的RowCommand事件

在该事件e.CommandArgument包含您的行号。

GridViewRow gvr = gvLinkImages.Rows [e.CommandArgument];

现在你可以使用gvr.Cells [列号],以获得特定的文本(不推荐) 或使用的FindControl,以获取标签或文字的开始/结束日期(假设你使用模板列) 示例代码下面

C#

protected void gvResults_RowCommand(object sender, GridViewCommandEventArgs e) 
{ 
if (e.CommandName == "SignUp") 
    { 
    int rwNumber = Convert.ToInt32(e.CommandArgument); 
    GridViewRow gvr = gvResults.Rows(rwNumber); 

    System.DateTime rowStartDate = default(System.DateTime); 
    System.DateTime rowEndDate = default(System.DateTime); 

    //If you are using Templatefields 
    Literal lblRowStartDate = gvr.FindControl("lblStartDate") as Literal; 
    Literal lblRowEndDate = gvr.FindControl("lblEndDate") as Literal; 
    rowStartDate = Convert.ToDateTime(lblRowStartDate.Text); 
    rowEndDate = Convert.ToDateTime(lblRowEndDate.Text); 

    //Incase you are not using TemplateFields or Autobinding your grid 
    rowStartDate = Convert.ToDateTime(gvr.Cells[0].Text); 
    rowEndDate = Convert.ToDateTime(gvr.Cells[1].Text); 

} 
} 

ASPX

<asp:GridView runat="server" ID="gvResults" AutoGenerateColumns="false" OnRowCommand="gvResults_RowCommand"> 
    <Columns> 
     <asp:TemplateField> 
      <ItemTemplate> 
       <asp:Literal runat="server" ID="lblStartDate" Text='<%#Container.DataItem.StartDate%>'></asp:Literal> 

      </ItemTemplate> 

     </asp:TemplateField> 
     <asp:TemplateField> 
      <ItemTemplate> 
       <asp:Literal runat="server" ID="lblStartDate" Text='<%#Container.DataItem.EndDate%>'></asp:Literal> 

      </ItemTemplate> 

     </asp:TemplateField> 
      <asp:TemplateField> 
      <ItemTemplate> 
       <asp:Button runat="server" ID="btnSignUp" CommandName="SignUp" CommandArgument="<%# Container.DataItemIndex %>" /> 

      </ItemTemplate> 

     </asp:TemplateField> 
    </Columns> 

</asp:GridView> 
+0

我试过下面的东西并且像魅力一样工作下面是代码if(e.CommandName ==“SignUp”) {GridViewRow row =(GridViewRow)((Control)e.CommandSource).NamingContainer; StartDate = DateTime.Parse(row.Cells [0] .Text); EndDate = DateTime.Parse(row.Cells [1] .Text); 控制ctl = e.CommandSource作为控件; – sandy143 2013-03-26 06:28:27

相关问题