C# 网格视图选定行数据

C# 网格视图选定行数据,c#,.net,asp.net,visual-studio,gridview,C#,.net,Asp.net,Visual Studio,Gridview,我通过以下代码从gridview on rowcommand事件获取数据 protected void GridView2_RowCommand(object sender, GridViewCommandEventArgs e) { if (e.CommandName == "editproject") { string rowindex = e.CommandArgument.ToString(); int index = int.Parse(

我通过以下代码从gridview on rowcommand事件获取数据

protected void GridView2_RowCommand(object sender, GridViewCommandEventArgs e)
{
    if (e.CommandName == "editproject")
    {
        string rowindex = e.CommandArgument.ToString();
        int index = int.Parse(rowindex);
        GridViewRow row = GridView2.Rows[index];
        Label6.Text = row.Cells[1].Text;
    }
}

但它只提供gridview行中可见字段的数据。如何获取不可见但绑定到gridview的字段。

您无法获取设置为不可见的值,因为这些字段未在客户端渲染,也无法在服务器端捕获


或者,您可以将值存储在隐藏字段中,然后从隐藏字段中获取值。

您可以,无法获取不可见的绑定元素,但您可以从数据源获取值。例如,您将数据保存在分配给网格的数据表中。将此数据表存储在视图状态,并在行上使用命令获取该行的数据键和通过数据表检索到的值。您可以获取类似于按钮的命令,该按钮在网格视图中不可见,看看这个:--- 按钮的假可见性要求您更改了
default.aspx
page指令中的属性
EnableEventValidation=“False”

private void grd_bind()
{
    SqlDataAdapter adp = new SqlDataAdapter("select* from tbbook", ConfigurationManager.ConnectionStrings["cn"].ConnectionString);

    DataSet ds = new DataSet();
    adp.Fill(ds);
    GridView1.DataSource = ds;
    GridView1.DataBind();
}

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
    if (e.Row.RowType == DataControlRowType.DataRow)
    {
        LinkButton lk = (LinkButton)(e.Row.Cells[5].Controls[0]);
        e.Row.Attributes["Onclick"] = ClientScript.GetPostBackClientHyperlink(lk, "");
    }
}

protected void GridView1_SelectedIndexChanged(object sender, EventArgs e)
{
    TextBox1.Text = GridView1.SelectedRow.Cells[0].Text;
    TextBox2.Text = GridView1.SelectedRow.Cells[1].Text;
    TextBox3.Text = GridView1.SelectedRow.Cells[2].Text;
    TextBox4.Text = GridView1.SelectedRow.Cells[3].Text;
    TextBox5.Text = GridView1.SelectedRow.Cells[4].Text;
}
然后在
default.aspx
页面中,设置
EnableEventValidation

<%@ Page Language="VB" EnableEventValidation="false" AutoEventWireup="false" CodeFile="Default.aspx.vb" Inherits="_Default" %>


因此无法获取值。一种方法是我可以获取所选行的datakeyvalue,然后使用linq查询数据库并获取值。我认为这样会更简单method@saurabh
数据键
可以保存多个值,您可以选择在其中添加列。您可以将值保存在隐藏字段中,并且您可以访问该字段。@V4vendetta我通过字符串projecid=GridView2获得了所选行的数据键。数据键[index].Value.ToString();
private void dataGridView1_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
{   
    MessageBox.Show(dataGridView1.SelectedRows[0].Cells[0].Value.ToString ());
}