例如说:表单中有个<asp:TextBox ID="SN" runat="server"></asp:TextBox>
如何点击gridview中行的任意位置,而将行的ID填入到SN中去?
新手,多谢啦!!!

解决方案 »

  1.   

    我不知道这个“点击任意位置”是否能够真正实现,例如你的行中毕竟还有TextBox,这个控件本身就大概会截获“点击”它的事件而不会pop给行来处理。你可以试试一下的做法。我把你的问题复杂一点,假设一行中有两个列,一列中有一个id为lbl的label控件,另一列则是你的TextBox控件,如果点击这一行的时候需要将lbl的值写入SN,可以在绑定到单个行时进行处理:    protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            if (e.Row.RowType == DataControlRowType.DataRow)
            {
                var txt = e.Row.FindControl("SN") as TextBox;
                var lbl = e.Row.FindControl("lbl") as Label;
                e.Row.Attributes["onclick"] = "document.getElementById('" + txt.ClientID + "').value=document.getElementById('" +
                    lbl.ClientID + "').value;";
            }
        }你可以将lbl的样式display设置为none,这样在客户端看不到但是存在。当然,如果不希望存在lbl,那么修改这里的第三行直接为“.value=”后边写死固定的值就可以了,这样绑定时已经将行的ID硬编码到行的onclick脚本代码中去了。
      

  2.   

    当然啦,如果你的TextBox不是在行上一定存在的,例如是在EditItemTemplate中的,那么那个if判断时应该另外判断 e.Row.RowState== DataControlRowState.Edit 等值。
      

  3.   

    哦,上面我是假设你的TextBox是在GridView中。如果不在GridView中就更简单啦,不用从 e.Row 执行 FindControl("SN") 而从表单查询就行了。
      

  4.   

    谢谢。
    可能我把问题说的还不是很清楚,这个我所需要的ID不是指行号的,而是从数据库中获得的ID
    例如,gridview中的第一列,其所有的值就是数据库从中取得的SN,我点击每一行的任意处,就是可以将这个值传递到表单中的textbox中去的。
    是这个意思啊。
      

  5.   

    搞了一个晚上,总算自己搞定啦:
    <asp:GridView ID="GridView1" runat="server"  OnSelectedIndexChanging="GridView1_SelectedIndexChanging" DataKeyNames="b_sn" OnRowDataBound="GridView1_RowDataBound">    protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e) 
        {
                    if (e.Row.RowType == DataControlRowType.DataRow) 
            {
                e.Row.Attributes["onclick"] = String.Format("javascirpt:__doPostBack('GridView1','Select$" + e.Row.RowIndex + "')"); 
            } 
                e.Row.Attributes["style"] = "Cursor:hand"; 
                e.Row.Attributes["title"] = "单击选择当前行";
        }    protected void GridView1_SelectedIndexChanging(object sender, GridViewSelectEventArgs e)
        {
           string strID = GridView1.DataKeys[e.NewSelectedIndex].Value.ToString();
        }简单是简单,有点成就感哪!