在datagrid更新事件里,有一个模板列,前台代码是这样的
<asp:TemplateColumn HeaderText="序列号">
<ItemTemplate>
<asp:Label Runat="server" ID="lsn"></asp:Label>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox ID="sn" Runat="server"></asp:TextBox>
</EditItemTemplate>
</asp:TemplateColumn>
我后台用什么语句能取到他的值,
璇儿 说:
我用(e.Item.FindControl("sn") as TextBox).Text,语法没问题,但是没取到值。最后30分了,帮我解决这个难题呀,各位大哥

解决方案 »

  1.   

    用这个试试吧 CType(e.Cells(3).Controls(0), TextBox).Text
      

  2.   

    i表示这个lable所在的顺序
    e.Item.Cell[i].Text = ...
      

  3.   

    (e.Item.FindControl("sn") as TextBox).Text应该是没错的,取不到值可能是你没有让DataGrid处于编辑状态,或者你在更新之前重新绑定了DataGrid。
      

  4.   

    你先试一下是不是空引用
    if(e.Item.FindControl("sn") != null)
    {
      (e.Item.FindControl("sn") as TextBox).Text
    }
    else
    {
       throw new ApplicationException("空引用");
    }
      

  5.   

    if e.Item.ItemType=ListItemType.EditItem  then
    {
       (e.Item.FindControl("sn") as TextBox).Text
    }
      

  6.   

    i表示这个lable所在的顺序
    e.Item.Cell[i].Text = ...
    对绑定列是对的,但是对模板就不行的,试过了
      

  7.   

    <asp:TextBox ID="sn" Runat="server"></asp:TextBox>TextBox txt = (TextBox)e.Items.FindControl("sn");
    string str = txt.Text;
      

  8.   

    string i = ((TextBox)(e.Item.Cells[i].Controls[0])).Text
      

  9.   

    在Form_Load中的邦定数据的代码放到:
    if( !IsPostBack )
    {}里面……
      

  10.   

    <asp:TemplateColumn HeaderText="序列号">
    <ItemTemplate>
    <asp:Label Runat="server" ID="lsn"></asp:Label>
    </ItemTemplate>
    <EditItemTemplate>
    <asp:TextBox ID="sn" Runat="server"></asp:TextBox>
    </EditItemTemplate>
    </asp:TemplateColumn>改为
    </asp:TemplateColumn>
    <asp:TemplateColumn HeaderText="序列号">
    <ItemTemplate>
    <asp:TextBox ID="sn" Runat="server"></asp:TextBox>
    </ItemTemplate>
    </asp:TemplateColumn>
      

  11.   

    查一下page_load的事件中有没有调用databing()
    你要是在page_load邦定数据而没有检查 ispostback
    你是得不到值的,这个是初学者常犯的错误
      

  12.   

    TextBox txt = (TextBox)e.Items.FindControl["sn"];
    string str = txt.Text;
      

  13.   

    TextBox txt = (TextBox)e.Items.FindControl["sn"];放在 DataGrid1_ItemDataBound中
      

  14.   

    Dim txtDtGrid As System.Web.UI.WebControls.TextBox
    Dim bb As String
    txtDtGrid = e.Item.FindControl("sn")
    bb = txtDtGrid.Text