2016-09-16 53 views
1

命令我有一個GridView稱爲gridview1什麼是選擇在網格視圖asp.net

我想的是,如果用戶選擇或點擊特定的行會發生一些動作。

例如,我想從該行獲取值並將其存儲在新變量中。

我該怎麼辦?我很困惑我該怎麼做才能獲得價值?

protected void GridView1_SelectedIndexChanging(object sender, GridViewSelectEventArgs e) 
{ 
    string stuId = ? 
} 

回答

2
<asp:GridView ID="GridView1" runat="server" HeaderStyle-BackColor="#3AC0F2" HeaderStyle-ForeColor="White" 
    AutoGenerateColumns="false" OnSelectedIndexChanged = "OnSelectedIndexChanged"> 
    <Columns> 
     <asp:BoundField DataField="Name" HeaderText="Name" ItemStyle-Width="150" /> 
     <asp:TemplateField HeaderText="Country" ItemStyle-Width="150"> 
      <ItemTemplate> 
       <asp:Label ID="lblCountry" runat="server" Text='<%# Eval("Country") %>'></asp:Label> 
      </ItemTemplate> 
     </asp:TemplateField> 
     <asp:ButtonField Text="Select" CommandName="Select" ItemStyle-Width="150" /> 
    </Columns> 
</asp:GridView> 
<br /> 
<u>Selected Row Values: </u> 
    <br /> 
<br /> 
<asp:Label ID="lblValues" runat="server" Text=""></asp:Label> 

aspx.cs代碼

protected void Page_Load(object sender, EventArgs e) 
{ 
    if (!this.IsPostBack) 
    { 
     DataTable dt = new DataTable(); 
     dt.Columns.AddRange(new DataColumn[3] { new DataColumn("Id"), new DataColumn("Name"), new DataColumn("Country") }); 
     dt.Rows.Add(1, "John Hammond", "United States"); 
     dt.Rows.Add(2, "Mudassar Khan", "India"); 
     dt.Rows.Add(3, "Suzanne Mathews", "France"); 
     dt.Rows.Add(4, "Robert Schidner", "Russia"); 
     GridView1.DataSource = dt; 
     GridView1.DataBind(); 
    } 
} 

protected void OnSelectedIndexChanged(object sender, EventArgs e) 
{ 
    //Accessing BoundField Column 
    string name = GridView1.SelectedRow.Cells[0].Text; 

    //Accessing TemplateField Column controls 
    string country = (GridView1.SelectedRow.FindControl("lblCountry") as Label).Text; 

    lblValues.Text = "<b>Name:</b> " + name + " <b>Country:</b> " + country; 
} 

您只需複製並粘貼您的問題的決心。

+0

我正在使用TemplateField。這對我有用。謝謝 – AL3MS

2

你可以使用這樣的:

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns = "false" 
    OnRowCommand = "OnRowCommand"> 
<Columns>  
<asp:ButtonField CommandName = "ButtonField" DataTextField = "StudID" 
      ButtonType = "Button"/> 
</Columns> 
</asp:GridView> 


protected void OnRowCommand(object sender, GridViewCommandEventArgs e) 
{ 
    int index = Convert.ToInt32(e.CommandArgument); 
    GridViewRow gvRow = GridView1.Rows[index]; 
} 
+0

執行最後兩行後,gvRow的值是多少?是整排? – AL3MS

+0

@ AL3MS是的,它將是整行。你需要找到你的控件,如標籤,文本框 –