【问题标题】:Asp.net grid view using datatable使用数据表的 Asp.net 网格视图
【发布时间】:2013-09-11 10:31:46
【问题描述】:

这是一个小的注册表单,我想做的就是当用户单击按钮时,我想通过使用数据表和会话将表单中的详细信息输入到网格视图中

<form id="form1" runat="server">
<div>
    <center>
        <table>                
            <tr>
                <td>
                    First Name
                </td>
                <td>
                    <asp:TextBox ID="TxtFirstName" runat="server"></asp:TextBox>
                </td>
            </tr>
            <tr>
                <td>
                    Last Name
                </td>
                <td>
                    <asp:TextBox ID="TxtLastName" runat="server"></asp:TextBox>
                </td>
            </tr>
            <tr>
                <td>
                    Location
                </td>
                <td>
                    <asp:TextBox ID="TxtLocation" runat="server"></asp:TextBox>
                </td>
            </tr>
            <tr>
                <td>
                    Mobile No
                </td>
                <td>
                    <asp:TextBox ID="TxtMobileNo" runat="server"></asp:TextBox>
                </td>
            </tr>
            <tr>
                <td>
                    <asp:Button ID="BtnSave" Text="SAVE" runat="server" onclick="BtnSave_Click"/>
                </td>
                <td>
                    <asp:Button ID="BtnCancel" Text="CANCEL" runat="server" />
                </td>
            </tr>
        </table>
    </center>
    <center>
        <asp:GridView ID="GridDataTable" runat="server" AutoGenerateColumns="false" >
        <Columns>            
        <asp:TemplateField HeaderText="First Name" >
        <ItemTemplate>            
        </ItemTemplate>
        </asp:TemplateField>            
        <asp:TemplateField HeaderText="Last Name"></asp:TemplateField>
        <asp:TemplateField HeaderText="Location"></asp:TemplateField>
        <asp:TemplateField HeaderText="Mobile No"></asp:TemplateField>
        </Columns>
        </asp:GridView>
    </center>
</div>
</form>

这是我的代码,但它不起作用帮助我解决这个问题

 protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            Bind();
        }

    }
     protected void Bind()
    {
        System.Data.DataTable workTable = new System.Data.DataTable("RegTable");           
        workTable.Columns.Add(new DataColumn("FirstName", typeof(String)));
        workTable.Columns.Add(new DataColumn("LastName", typeof(String)));
        workTable.Columns.Add(new DataColumn("Location", typeof(String)));
        workTable.Columns.Add(new DataColumn("MobileNo", typeof(Int32)));  
        Session["RegDetails"] = workTable;           
        GridDataTable.DataSource = workTable;
        GridDataTable.DataBind();
    }

    protected void BtnSave_Click(object sender, EventArgs e)
    {
        System.Data.DataTable dt = (System.Data.DataTable)Session["RegDetails"];          
        DataRow  dr = dt.NewRow();
        dr["FirstName"] = TxtFirstName.Text.ToString();
        dr["LastName"] = TxtLastName.Text.ToString();
        dr["Location"] = TxtLocation.Text.ToString();
        dr["MobileNo"] = TxtMobileNo.Text;
        dt.Rows.Add(dr);
        Session["RegDetails"] = dt;            
        GridDataTable.DataSource = dt;
        GridDataTable.DataBind();         


    }

【问题讨论】:

  • “它不起作用” 也许您可以稍微说明一下问题所在。顺便说一句,你为什么要添加一个没有名称和类型的DataColumnworkTable.Columns.Add(workCol);
  • 我认为每一列都有它的类型和名称。有什么问题
  • 究竟是什么在这里不起作用?可能是会话,请尝试使用ViewState。这条线DataColumn workCol = new DataColumn();你在用它做什么?为什么你在这里添加一个空行DataRow dr = workTable.NewRow();
  • @Vivekh:我已经发布了没有名称和类型的DataColumn,它是workCol。你已经用这种方式初始化了它:DataColumn workCol = new DataColumn();.
  • 知道它还没有将 itemtemplate 添加到 gridview。无论如何谢谢

标签: c# asp.net


【解决方案1】:

唯一的问题是您的GridView 标记。您的代码背后的部分复制和验证相同。

如您所见,您的&lt;asp:TemplateField&gt; 中的任何字段(如&lt;asp:label&gt; 等)都没有绑定数据。

此外,您在某些&lt;asp:TemplateFields&gt; 中缺少&lt;ItemTemplates&gt;

所以将您的 GridView 标记设置为:

<asp:GridView ID="GridDataTable" runat="server" 
     AutoGenerateColumns="false" >
 <Columns>            
    <asp:TemplateField HeaderText="First Name" >
        <ItemTemplate> 
           <asp:Label Text='<%#Eval("FirstName")%>' runat="server">   
           </asp:Label>                
        </ItemTemplate>
    </asp:TemplateField>            
    <asp:TemplateField HeaderText="Last Name">
       <ItemTemplate> 
           <asp:Label Text='<%#Eval("LastName")%>' runat="server">   
           </asp:Label>                
        </ItemTemplate>
    </asp:TemplateField>
    <asp:TemplateField HeaderText="Location">
       <ItemTemplate> 
           <asp:Label Text='<%#Eval("Location")%>' runat="server">   
            </asp:Label>                
        </ItemTemplate>
     </asp:TemplateField>
    <asp:TemplateField HeaderText="Mobile No">
        <ItemTemplate> 
           <asp:Label Text='<%#Eval("MobileNo")%>' runat="server">   
           </asp:Label>                
        </ItemTemplate>
    </asp:TemplateField>
  </Columns>
  </asp:GridView>

【讨论】:

    【解决方案2】:

    首先你将数据插入数据库,然后通过gridview检索它......

    【讨论】:

    • 这不是答案。
    猜你喜欢
    • 1970-01-01
    • 2010-10-27
    • 2016-09-28
    • 1970-01-01
    • 1970-01-01
    • 2011-03-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多