GridView中的数据源是某个目录下的所有文件的路径,GridView绑定代码如下: string[] groups = Directory.GetFiles(s); //s为文件路径
GridView1.DataSource = groups;
GridView1.DataBind();请问,如何设置DataKeyNames使得我在代码GridView1.DataKeys[e.RowIndex].Values.ToString()中得到相应行的文件路径?
GridView1.DataSource = groups;
GridView1.DataBind();请问,如何设置DataKeyNames使得我在代码GridView1.DataKeys[e.RowIndex].Values.ToString()中得到相应行的文件路径?
用这个试试吧
GridView1.Rows[GridView1.SelectedIndex].Cells[0].Text;
第二个用:GridView1.DataKeys[e.RowIndex][1].ToString();
第三个用:GridView1.DataKeys[e.RowIndex][2].ToString();
……
你可以测试一个具体的数字
GridView1.Rows[0].Cells[0].Text; 这个是可以的.
<asp:GridView ID="GridView1" runat="server" DataKeyNames="sDirectoyr" 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("sDirectoyr");
for (int i = 0; i < group.Length; i++)
{
dt.Rows.Add(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());
}