【问题标题】:grid view selected row data网格视图选定的行数据
【发布时间】:2011-07-11 10:56:25
【问题描述】:

我通过以下代码从 gridview 获取 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 的字段。

【问题讨论】:

    标签: c# .net asp.net visual-studio gridview


    【解决方案1】:

    您无法获取设置为不可见的值,因为这些值未在客户端呈现,无法在服务器端抓取。

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

    【讨论】:

    • 所以没有办法获取值。
    • 一种方法是我可以获取所选行的 datakeyvalue 并使用 linq 查询查询数据库并获取值。我认为会有更简单的方法
    • @saurabh DataKeys 可以容纳多个值,您可以选择在那里添加列
    • 您可以将值保存在隐藏字段中并且您可以访问。
    • @V4vendetta 我通过字符串 projecid = GridView2.DataKeys[index].Value.ToString(); 得到了所选行的数据键;
    【解决方案2】:
    private void dataGridView1_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
    {   
        MessageBox.Show(dataGridView1.SelectedRows[0].Cells[0].Value.ToString ());
    }
    

    【讨论】:

      【解决方案3】:

      您无法获取不可见的绑定元素,但您可以从数据源获取值。例如,您将数据保存在分配给网格的数据表中。将此数据表存储在视图状态和行命令获取数据-该行的键和通过数据表检索的值

      【讨论】:

        【解决方案4】:

        你可以得到一个在gridview中不可见的类似命令的按钮,看看这个:--- 按钮的错误可见性要求您更改了default.aspx 中页面指令上的属性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" %>
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2021-03-27
          • 1970-01-01
          • 1970-01-01
          • 2010-09-09
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多