GridView在选择是如何传递参数,数据库有唯一值ID,怎样通过GridView的选择事件传递这个参数,望高手讲解!

解决方案 »

  1.   

    DataKeyNames="[字段名],[字段名]...."
      

  2.   

    先在控件的属性列中设置datafilekey,
      

  3.   

    <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataKeyNames="productid" DataSourceID="SqlDataSource1" OnSelectedIndexChanging="GridView1_SelectedIndexChanging">
        <Columns>
            <asp:BoundField DataField="productid" HeaderText="productid" InsertVisible="False"
                ReadOnly="True" SortExpression="productid" />
            <asp:BoundField DataField="productname" HeaderText="productname" SortExpression="productname" />
            <asp:TemplateField>
                <ItemTemplate>
                    <asp:Label ID="Label1" runat="server" Text='<%# Eval("productname") %>'></asp:Label>
                    
                </ItemTemplate>
            </asp:TemplateField>
            <asp:TemplateField ShowHeader="False">
                <ItemTemplate>
                    <asp:LinkButton ID="lbtnSelect" runat="server" CausesValidation="False" CommandName="Select"
                        Text="选择"></asp:LinkButton>
                </ItemTemplate>
            </asp:TemplateField>
        </Columns>
    </asp:GridView>
    <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="Data Source=.\sqlexpress;Initial Catalog=Northwind;Integrated Security=True" ProviderName="System.Data.SqlClient" SelectCommand="select productid, productname from products"></asp:SqlDataSource>protected void GridView1_SelectedIndexChanging(object sender, GridViewSelectEventArgs e)
    {
        //这里通过DataKeys的集合得到主键,不过前提是给GridView设置过DataKeyNames
        string productid = GridView1.DataKeys[e.NewSelectedIndex].Value.ToString();
        Response.Write(productid);
    }
      

  4.   

    protected void GridView1_SelectedIndexChanging(object sender, GridViewSelectEventArgs e)
    {
        //这里通过DataKeys的集合得到主键,不过前提是给GridView设置过DataKeyNames
        string productid = GridView1.DataKeys[e.NewSelectedIndex].Value.ToString();
        Response.Write(productid);
    }
      

  5.   

    GridView1.DataKeys[e.NewSelectedIndex].Value.ToString();
      

  6.   

    直接在GV里面加一个列,绑定ID,然后设置为隐藏,每次读取这个隐藏的ID不就可以了.
      

  7.   

    貌视楼主不晓得GridView1.DataKeys[e.NewSelectedIndex].Value.ToString();
    注意:在<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataKeyNames="productid" DataSourceID="SqlDataSource1" OnSelectedIndexChanging="GridView1_SelectedIndexChanging"/>一定要加上红色字体部分,用来绑定数据
        
      

  8.   

    两种方式.一种是使用GridView控件自带的"选择"功能,代码如下
    protected void GridView1_SelectedIndexChanged(object sender, EventArgs e)
    {
        Response.Write(GridView1.SelectedDataKey.Value);
    }
    另一种方式,是自定义模版列,使用Button控件,代码如下
    protected void Button1_Click(object sender, EventArgs e)
        {
            int index = ((GridViewRow)((Button)sender).Parent.Parent).RowIndex;
            //通过下面的方式找到当前行主键        
            string strID = GridView1.Rows[index].Cells[1].Text;        
            Response.Write(strID);
        }
      

  9.   

        protected void GridView1_SelectedIndexChanging(object sender, GridViewSelectEventArgs e)
        {
            TextBox1.Text = GridView1.Rows[e.NewSelectedIndex].Cells[1].Text.ToString();   
        }