如题,主键是可以这样取的,但是其他列我不知道怎么去取了
int ID=(int)(this.VideoDataGrid.DataKeys[e.Item.ItemIndex]);
我的datagrid用的是模板列,删除按钮用的Linkbutton
而且按下面这几种方法取的话,发现全是空值:
string UserName=((DataRowView)e.Item.DataItem)["UserName"].ToString();
string UserName=this.VideoDataGrid.Items[e.Item.ItemIndex].Cells["UserName"].ToString();
string UserName=DataBinder.Eval(e.Item.DataItem,VideoData.USERID_FIELD).ToString();
谁帮帮我解决啊,弄了好久了,急

解决方案 »

  1.   

    string UserName = e.Item.Cells[8].Text;
      

  2.   

    楼上兄弟,上面的我试过了,不行,
    string UserName = e.Item.Cells[2].text;//UserName的结果是空值
    string UserName=e.Item.Cells[2].ToString();//UserName的结果是空值
    ??????
    实在是不知道怎么回事
      

  3.   

    代码放在哪个事件里边?是ItemCommand么
      

  4.   

    string name = ((TextBox)e.Item.Cells[1].Controls[0]).Text;
      

  5.   

    不可能的吧,用e.item.cells[i].text肯定可以,你是写在哪个事件里的?
      

  6.   

    private void DataGrid1_DeleteCommand(object source,System.Web.UI.WebControls.DataGridCommandEventArgs e)
    {...}
    ...
    override protected void OnInit(EventArgs e)
    {
    //
    // CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
    //
    InitializeComponent();
    base.OnInit(e);
    }
    private void InitializeComponent()
    {
    this.DataGrid1.DeleteCommand += new System.Web.UI.WebControls.DataGridCommandEventHandler(this.VideoDataGrid_DeleteCommand);
    }
    --------------------
    补充说下,我的datagrid用的是模板列:
    <asp:datagrid id=DataGrid1 runat="server" DataKeyField="<%# "ID" %>" AllowPaging="True" AutoGenerateColumns="False" BorderWidth="0px" CellPadding="4" Width="100%" PageSize="15" CellSpacing="1" HorizontalAlign="Center" AllowSorting="True" AllowCustomPaging="True">
    <asp:TemplateColumn HeaderText="用户"> <HeaderStyle HorizontalAlign="Center" Width="10%"></HeaderStyle> <ItemTemplate><%# DataBinder.Eval(Container.DataItem,"UserName")%>
    </ItemTemplate>
    </asp:TemplateColumn>
    <asp:TemplateColumn HeaderText="删除"> <HeaderStyle HorizontalAlign="Center" Width="8%"></HeaderStyle> <ItemStyle HorizontalAlign="Center"></ItemStyle> <ItemTemplate> <asp:LinkButton id="lbDelete" runat="server" CommandName="Delete" CausesValidation="False">删除</asp:LinkButton> </ItemTemplate>
    </asp:TemplateColumn>
    </asp:datagird>
      

  7.   

    DataGrid.DataKeys[e.Item.ItemIndex].ToString().Trim()
      

  8.   

    Int ID=(int)DataGrid.DataKeys[e.Item.ItemIndex];
    已经能取出主键,但是我想取其他字段的值
      

  9.   

    就在DataGrid1_DeleteCommand事件里面
      

  10.   

    高手啊,来帮我看看啊,现在我只能用DataKey重新访问数据库,感觉好慢啊