网格视图内的文本框不显示数据

Posted

技术标签:

【中文标题】网格视图内的文本框不显示数据【英文标题】:Text box inside a grid view not showing data 【发布时间】:2015-05-11 14:53:59 【问题描述】:

我正在网格视图中添加一个文本框。

当用户单击添加按钮时,会创建一个新文本框。

我正在从文本框中获取所有数据,但是当我添加数据时,文本框没有显示任何内容

          private void SetPreviousTids(DataTable dt)
          
             if (ViewState["TidTable"] != null)
               
                  if (dt.Rows.Count > 0)
                  
                 for (int i = 0; i < dt.Rows.Count; i++)
            

               TextBox Tid =  (TextBox)GridView1.Rows[i].Cells[0].FindControl("Tid");
               Response.Write(Tid.Text.ToString());
               Tid.Text = "hello";// text not showing on text box
            
         
     
 

这里是ASPX代码

    <asp:GridView ID="GridView1" runat="server" Visible="true">
    <Columns>
        <asp:TemplateField HeaderText="TID">
            <ItemTemplate>
                <asp:TextBox ID="Tid" runat="server"></asp:TextBox>
            </ItemTemplate>
            <FooterTemplate>
                <asp:Button ID="ButtonAdd" runat="server" Text="+" OnClick="Add_Tid" />
            </FooterTemplate>
        </asp:TemplateField>
    </Columns>
</asp:GridView>

【问题讨论】:

您应该将 SetPreviousTids 代码放在 gridview_RowDataBound 处理程序中,并使用 RowEventArgs 访问控件。 【参考方案1】:

你会想要这样的:

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)

    if (e.Row.RowType == DataControlRowType.DataRow)
    
        TextBox myTextBox = (TextBox)(e.Row.Cells[1].FindControl("Tid"));
        myTextBox.Text == "hello";
    
 

【讨论】:

如果您需要帮助调试,您需要显示更多代码。您不能只从后面代码中的任何位置访问行绑定控件。您需要为此使用网格特定的处理程序。 但我正在访问值,但值未显示这是我的简单函数,每次我调用函数到 rad 文本框值并想显示但值未显示时,我都会从页面加载中调用它 有没有办法在网格视图函数之外显示价值? 加载网格后,您可以使用一些 javascript 访问文本框值。如果您想从后面的代码中执行此操作,则需要按照上面的示例进行操作。【参考方案2】:

当使用 &lt;asp:TemplateField&gt; 等模板为 GridView 定义列时,无法使用 Cells 属性访问此类列。

但是,当使用绑定字段 &lt;asp:BoundField .. /&gt; 为 GridView 定义列时,您可以使用 Cells 属性来访问列。

所以,改变

TextBox Tid =  (TextBox)GridView1.Rows[i].Cells[0].FindControl("Tid");

TextBox Tid =  (TextBox)GridView1.Rows[i].FindControl("Tid");

【讨论】:

【参考方案3】:

我相信这应该可行!

<asp:GridView ID="grdList" runat="server" Visible="true" onrowcommand="grdList_RowCommandEvent">
    <Columns>
        <asp:TemplateField HeaderText="TID">
            <ItemTemplate>
                <asp:TextBox ID="Tid" runat="server" Text='<%# Eval("TextboxInfor") >%'></asp:TextBox>
            </ItemTemplate>
            <FooterTemplate>
                <asp:Button ID="ButtonAdd" runat="server" Text="+" CommandName="AddNew" />
            </FooterTemplate>
        </asp:TemplateField>
    </Columns>
</asp:GridView>

后面的代码应该是这样的:

namespace Demo

    public partial class Default : System.Web.UI.Page
    
        DataTable _tableData;
        protected void Page_Load(object sender, EventArgs e)
        
            if(!Page.IsPostBack)
            
                _tableData=new DataTable();
                _tableData.Columns.Add("TextboxInfor");
                ViewState["TidTable"]=_tableData;
            
               
        protected void grdList_RowCommandEvent(object sender, GridViewCommandEventArgs e)
        
            if(e.CommandName.Equlas("AddNew"))
               
                _tableData= ViewState["TidTable"] as DataTable;         
                for (int i = 0; i < grdList.Rows.Count; i++)
                
                    var Tid= gvMandiStatistics.Rows[0].Cells[0].FindControl("Tid") as TextBox;
                    _tableData.Rows[i]["TextboxInfor"]=Tid.Text;
                               
                var dr= _tableData.NewRow();
                dr["TextboxInfor"]=string.Empty;
                _tableData.Rows.Add(dr);
            
               
        private void BindGrid()
        
            _tableData= ViewState["TidTable"] as DataTable; 
            grdList.DataSource=_tableData;
            grdList.DataBind();
        
    

如果有一些拼写错误,请原谅,因为整个代码都是用 NOTEPAD :D

编写的

【讨论】:

以上是关于网格视图内的文本框不显示数据的主要内容,如果未能解决你的问题,请参考以下文章

如何使用文本框在数据网格视图中搜索数据

在网格视图中的 ASCX 控件内的控件上使用 Javascript 显示隐藏。 (ASP.NET + Javascript)

绑定网格视图内的多列 devexpress 组合框

以编程方式将新行添加到数据网格视图

Flutter:列表视图内的网格视图

网格视图验证