DataGrid中我只设置了一个模板列,里面的数据已经和数据库绑定,并且能够正常显示数据,其中一项是“编号”(Label1)
在模板列里我还有一个“编辑”按钮(LinkButton1),并且CommandName=cnEdit
我在DataGrid的ItemCommand中编辑事件如下:
private void DataGrid1_ItemCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
    ...
    if(e.CommandName=="cnEdit")
    {
        string 编号=((Label)e.Item.Cells[0].FindControl("Label1")).Text.Trim();
        Response.Redirect("EditPage.aspx?no="+编号);
    }
    ...
}
但我在调试是发现变量“编号”始终是"",也就是无法得到相应的Label的Text值,这是为什么呢?或者有其他方式获得它的值?
请各位师傅指点迷津~~万分感谢!

解决方案 »

  1.   

    1. Cells[0]是不是编号所在的列?
    2.
     试一下:
     if(e.Item.ItemType!=ListItemType.Header&&e.Item.ItemType!=ListItemType.Footer)
     {
         if(e.CommandName=="cnEdit")
        {
            string 编号=((Label)e.Item.Cells[0].FindControl("Label1")).Text.Trim();
            Response.Redirect("EditPage.aspx?no="+编号);
        }  }
      

  2.   

    e.Item[i].Cells[0].   获取你当前编辑的记录数i
      

  3.   

    string bh=((Label)e.Item.FindControl("Label1")).Text.Trim();
      

  4.   

    师傅们,我的DataGrid就只有一列,并且是模板列,里面我做了一个表格,插了一些控件,
    你们说的方法我都试过了,好像还是不行啊...
      

  5.   

    顺便说一下aspx页面中我是通过
    <asp:Label id="Label1" runat="server" Visible="False"><%# DataBinder.Eval(Container.DataItem,"字段") %></asp:Label>
    绑定数据的,是不是在后台获取Text值的时候会丢失值呢?
      

  6.   

    <asp:datagrid id=dgrDocList runat="server">
    <Columns>
    <asp:TemplateColumn>
    <ItemTemplate>
    <TABLE id="Table1" style="FONT-SIZE: 9pt" cellSpacing="0" cellPadding="3" width="100%" border="0">
    <TR>
    <TD colSpan="2">&nbsp;<IMG height="12" src="" width="12">&nbsp; 
    <asp:LinkButton id="lbnDocName" runat="server" CommandName="cnDocName"><%# DataBinder.Eval(Container.DataItem,"FileTitle") %></asp:LinkButton>
    <asp:Label id="lblFilePath" runat="server" Visible="False"><%# DataBinder.Eval(Container.DataItem,"FilePath") %></asp:Label></TD>
    <TD width="20%">文档编号</TD>
    <TD width="33%">
    <asp:Label id="Label1" runat="server"><%# DataBinder.Eval(Container.DataItem,"FileNo")%></asp:Label></TD></TR>       这就是我要获得的文档编号
    <TR>
    <TD width="14%" bgColor="#a8d5f4">最后修改人</TD>
    <TD width="33%"><%# DataBinder.Eval(Container.DataItem,"LastStaff")%><FONT face="宋体"></FONT></TD>
    <TD bgColor="#a8d5f4">最后修改时间</TD>
    <TD><%# DataBinder.Eval(Container.DataItem,"LastDate")%></TD></TR>
    <TR>
    <TD>描述</TD>
    <TD colSpan="3"><%# DataBinder.Eval(Container.DataItem,"Memo")%><FONT face="宋体"></FONT></TD></TR>
    <TR>
    <TD bgColor="#a8d5f4">下载次数</TD>
    <TD><%# DataBinder.Eval(Container.DataItem,"DownCount")%></TD>
    <TD align=right colSpan=2>
    <asp:LinkButton id="LinkButton1" runat="server" CommandName="cnEdit">编辑</asp:LinkButton>&nbsp;&nbsp;         编辑按钮
    <asp:LinkButton id="lbnDocDelete" runat="server" CommandName="cnDelete">删除</asp:LinkButton>&nbsp;&nbsp;</TD></TR></TABLE>
    </ItemTemplate>
    </asp:TemplateColumn>
    </Columns>
    </asp:datagrid>
      

  7.   

    上面的就是DataGrid的代码,有些样式的代码我已经删掉了,还是比较多,模板列里的基本没有动过
      

  8.   

    <asp:Label id="Label1" runat="server"><%# DataBinder.Eval(Container.DataItem,"FileNo")%></asp:Label>
    改为
    <asp:Label id="Label1" runat="server"><%# this.dgrDocList.CurrentPageIndex * this.dgrDocList.PageSize + Container.ItemIndex + 1%>
    asp:Label>归纳为自动编号的问题,不知道有没有答对
      

  9.   

    For Each c As Control In Me.dbdList.SelectedItem.Cells(0).Controls
        If TypeOf c Is LinkButton Then
                    Me.textbox1.Text = CType(c, LinkButton).Text
        End If
    Next这样子就可以在textbox1中得到你所选择的 列0的linkbutton的text