2017-01-25 92 views
0

我正在使用带有asp转发器的表格。我想检索表格数据到C#中的数据表。我怎样才能做到这一点?如何将html表格数据获取到数据表格

设计:

<asp:Repeater runat="server" ID="rptItems"> 
     <HeaderTemplate> 
     <table id="tblDetItems" border="1" style="font-size: 9pt; border-color: #A9A9A9; 
     position: relative; overflow-y: auto;" class="display" cellspacing="0"> 
     <thead style="background: #808080; color: White; font-weight: bold; border-color: White;"> 
     <tr> 
     <th style="width: 10px;"> 
      SlNo. 
     </th> 
     <th style="width: 200px;"> 
      Item Code 
     </th> 
     <th style="width: 300px;"> 
      Description 
     </th> 
     <th style="width: 80px;"> 
      Group 
     </th> 
     <th style="width: 100px;"> 
      Standard Rate 
     </th> 
     <th style="width: 100px;"> 
      Labour Charge 
     </th> 
     <th style="width: 100px;"> 
      Recovery Cost 
     </th> 
     <th style="width: 80px;"> 
      Active ID 
     </th> 
     </tr> 
     <tr style="background-color: Silver;"> 
     <th style="width: 10px;"> 
      <input type="text" runat="server" style="width: 60px;" id="txtslno" /> 
     </th> 
     <th style="width: 200px;"> 
      <input type="text" runat="server" style="width: 200px;" id="txtCode" /> 
     </th> 
     <th style="width: 300px;"> 
      <input type="text" runat="server" style="width: 300px;" id="txtDesc" /> 
     </th> 
     <th style="width: 80px;"> 
      <input type="text" runat="server" style="width: 80px;" id="txtGroup" /> 
     </th> 
     <th style="width: 100px;"> 
      <input type="text" runat="server" style="width: 100px;" id="txtStdRate" /> 
     </th> 
     <th style="width: 100px;"> 
      <input type="text" runat="server" style="width: 100px;" id="txtLbrCharge" /> 
     </th> 
     <th style="width: 100px;"> 
      <input type="text" runat="server" style="width: 100px;" id="txtRcvryCost" /> 
     </th> 
     <th style="width: 80px;"> 
      <select id="cmbUseId" runat="server" style="width: 80px;"> 
      <option value="Y">Yes</option> 
      <option value="N">No</option> 
      </select> 
     </th> 
     </tr> 
     </thead> 
     <tbody> 
    </HeaderTemplate> 
     <ItemTemplate> 
     <tr> 
     <td style="width: 10px; text-align: right; height: 13px;"> 
      <%# Eval("sl_no")%> 
     </td> 
     <td style="width: 200px; height: 13px;"> 
      <input type="text" runat="server" style="width: 190px; text-align: left; height: 13px;" id="txtCode" value='<%# Eval("item_cd")%>' onkeyup="return onkeyup_txtphystkv(this,event);" /> 
     </td> 
     <td style="width: 300px; height: 13px;"> 
      <%# Eval("item_desc")%> 
     </td> 
     <td style="width: 80px; height: 13px;"> 
      <%# Eval("gp_cd")%> 
     </td> 
     <td style="width: 100px; text-align: right; height: 13px;"> 
      <input type="text" runat="server" style="width: 100px; text-align: right; height: 13px;" id="txtStdRate" value='<%# Eval("std_rt")%>' onkeyup="return onkeyup_txtphystkv(this,event);" /> 
     </td> 
     <td style="width: 100px; height: 13px;"> 
      <input type="text" runat="server" style="width: 100px; text-align: right; height: 13px;" id="txtLbrCharge" value='<%# Eval("labour_charge")%>' onkeyup="return onkeyup_txtphystkv(this,event);" /> 
     </td> 
     <td style="width: 100px; height: 13px;"> 
      <input type="text" runat="server" style="width: 100px; text-align: right; height: 13px;" id="txtRcvryCost" value='<%# Eval("recovery_cost")%>' onkeyup="return onkeyup_txtphystkv(this,event);" /> 
     </td> 
     <td style="width: 80px; text-align: right; height: 18px;"> 
      <select id="cmbUseId" runat="server" style="width: 80px; height: 18px;"> 
      <option value="Y" selected="selected">Yes</option> 
      <option value="N">No</option> 
     </select> 
     </td> 
     </tr> 
     </ItemTemplate> 
    <FooterTemplate> 
    </tbody> </table> 
    </FooterTemplate> 
    </asp:Repeater> 

enter image description here

+0

你可以在按钮点击添加一个'C#'代码来创建一个新的空数据表,然后用你的表数据填充它 – Hemal

回答

1

第一件事,需要采取中继服务器的控制输入的数据。为此,控件(文本框,下拉列表等)应该可以在后面的代码中访问。

您需要与

<asp:TextBox id="<<appropriateId>>" runat="server" /> 
<asp:DropDownList id="<<dropdownListId1>>" runat="server"> 
    <asp:ListItem Text="Yes" Value="Y" /> 
    <asp:ListItem Text="No" Value="N" /> 
</asp:DropDownList> 

更换

<input type="text"> 
<select id="cmbUseId" runat="server"> 

在按钮的点击你需要创建一个DataTable,并添加相应的列到它。

var dataTable = new DataTable(); 

var column = new DataColumn(); 
column.ColumnName = <<columnname1>>; 
column.DataType = <<columntype1>>; 

dataTable.Columns.Add(column); 

column = new DataColumn(); 
column.ColumnName = <<columnname2>>; 
column.DataType = <<columntype2>>; 

dataTable.Columns.Add(column); 

//And So On.. to add necessary columns to the datatable. 

然后环路直通转发的所有项目,从每个项目的访问控制和填充它们在数据行和在上面创建的表中添加DataRow中。

foreach (RepeaterItem item in rptItems.Items) 
{ 
    var dataRow = dataTable.NewRow(); 

    if (item.ItemType == ListItemType.Item) 
    { 
     var textBox1 = (TextBox)item.FindControl("<<textboxId1>>"); 

     dataRow["<<columnname1>>"] = textBox1.Text; 

     var textBox2 = (TextBox)item.FindControl("<<textboxId2>>"); 

     dataRow["<<columnname2>>"] = textBox2.Text; 

     //And So On... to retrive values from all the textboxes inside the item and set values of appropriate columns in dataRow; 

     var dropdownList = (DropDownList)item.FindControl("<<dropdownListId1>>") 

     dataRow["<<somecolumn>>"] = dropdownList.SelectedValue; 

     //Once values from all the controls of item are obtained and set in the dataRow; 

     datatable.Rows.Add(dataRow); 
    } 
}