我用一个GridView来显示某目录下的所有文件,GridView中有一个删除按钮,当我点删除时为什么得不到该行的值?代码如下:Response.Write(GridView1.DataKeys[e.RowIndex].Values.ToString());

解决方案 »

  1.   

    GridView1.rows[e.RowIndex][0].ToString()
      

  2.   

    有时e.RowIndex会为 -1 ,所以你判断不是-1时在操作
      

  3.   

    Response.Write(GridView1.DataKeys[e.RowIndex].Values[0].ToString());
      

  4.   

    控件属性里 DataKeyNames 绑定值了吗
      

  5.   

    gridview gv = (girdview)sender;
    response.write(gv.datakeys[e.rowindex].value.tostring());
    不用gridveiw1,用gridview试试
      

  6.   

    没绑定,我是用下面的代码来绑定的,不知道要在DataKeyNames中怎么绑定        string[] groups = Directory.GetFiles(s);  //s为文件路径
            GridView1.DataSource = groups;
            GridView1.DataBind();
      

  7.   

    没绑定DataKeyNames?????

    你在 前边 gridview属性里 把datakeynames填上
      

  8.   


    没有做过文件方面 的,不知道要在DataKeyNames里填什么....兄弟请指教一下...
      

  9.   

    可能你没有设定GridView的DataKeyName,可以在aspx文件中gridview的属性中加入
    也可以点gridview右上角的智能图标,在gridview属性页中修改DataKeyName
      

  10.   


    DataKeyNames填gridview中要绑定的字段
      

  11.   


    这个我知道,我现在在数据源是某个目录下的所有文件的路径,GridView绑定代码如下:
            string[] groups = Directory.GetFiles(s);  //s为文件路径
             GridView1.DataSource = groups;
            GridView1.DataBind();我现在是不知道要在DataKeyNames里写什么....
      

  12.   

    ((TextBox)(GridView1.Rows[e.RowIndex].Cells[1].Controls[0])).Text.ToString().Trim() 
      

  13.   


    到GridView的属性面板中,打到DataKeyNames项,点击后面的"..."按钮.在弹出的框中写进字段名就行了.
    如要设ID列为DataKeyNames中的一员.直接输入ID.然后OK就行了.
    如果想输入多列也行,每输入一个列名,回车.
      

  14.   


    能得到吗?
    应该是e.Row.RowIndex吧.
      

  15.   

    前台html<asp:GridView ID="GridView1" runat="server" DataKeyNames="Group"  AutoGenerateColumns="False" OnRowDeleting="GridView1_RowDeleting">
                <Columns>
                    <asp:TemplateField>
                        <ItemTemplate>
                            <asp:Label ID="Label1" runat="server" Text='<%#Eval("sDirectoyr") %>'></asp:Label>
                        </ItemTemplate>
                    </asp:TemplateField>
                   <asp:TemplateField>
                    <ItemTemplate>
                        <asp:LinkButton ID="lbEdit" runat="server" CommandName="Delete" Text="编辑"></asp:LinkButton>
                    </ItemTemplate>
                   </asp:TemplateField>
                </Columns>
            </asp:GridView>
    后台CS代码protected void Page_Load(object sender, EventArgs e)
            {
                if (!Page.IsPostBack)
                {
                    string[] group = Directory.GetFiles(@"c:\");
                    DataTable dt = new DataTable();
                    dt.Columns.Add("Group");
                    dt.Columns.Add("sDirectoyr");
                    for (int i = 0; i < group.Length; i++)
                    {
                        dt.Rows.Add(new object[] { i, group[i] });
                    }
                    this.GridView1.DataSource = dt;
                    this.GridView1.DataBind();
                }
            }        protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e)
            {
                GridView gv = (GridView)sender;
                Response.Write(gv.DataKeys[e.RowIndex].Value.ToString());
            }
      

  16.   

    e.RowIndex(e.Row.RowIndex没有这个..)能得到,但是Response.Write(GridView1.Rows[e.RowIndex].Cells[0].Text.ToString())出来什么都没有,是空值...
      

  17.   

    上面的代码你把DataKeyNames="Group" 改成DataKeyNames="sDirectoyr"
    建表的时候只建一列就可以了.就能得到文件路径了