2013-03-19 94 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

相關問題