2015-11-30 44 views
1

使用jquery我將gridview值附加到表中。 如何在後面的代碼中讀取動態創建的td值。如何訪問html表的td值來隱藏代碼?

我jQuery代碼是

$(function() { 
     SetEmptyMessage(); 
     $("[id*=cbSelect]").on("click", function() { 
      var selected = $('[id$=gvCompanyListing] tr td input[type=checkbox]:checked'); 
      if (selected.length > 0) { 
       $(selected).each(function() { 
        var appendRow = $(this).closest('tr').clone(true); 
        var row = $(this).closest('tr'); 
        $(row).remove(); 
        $("[id$=tblAssigned]").append(appendRow); 
       }); 
       SetEmptyMessage(); 
       return false; 
      } 
      else { 
       var selected = $('[id$=tblAssigned] tr td input[type=checkbox]:not(:checked)'); 
       if (selected.length > 0) { 
        $(selected).each(function() { 
         var appendRow = $(this).closest('tr').clone(true); 
         var row = $(this).closest('tr'); 
         $(row).remove(); 
         $("[id$=gvCompanyListing]").append(appendRow); 
        }); 
       } 
       SetEmptyMessage(); 
       return false; 
      } 
     }); 
    }); 

    function SetEmptyMessage() { 
     if ($('[id$=tblAssigned] td').closest('tr').length == 0) { 
      //var colspan = $('[id$=gvAssigned] th').length; 
      //$('[id$=tblAssigned]').append('<tr class="empty"><td colspan=' + colspan + '>No records were found</td></tr>'); 
     } else { 
      $('[id$=tblAssigned]').find('.empty').remove(); 
     } 

     if ($('[id$=gvCompanyListing] td').closest('tr').length == 0) { 
      //var colspan = $('[id$=gvCompanyListing] th').length; 
      //$('[id$=gvCompanyListing]').append('<tr class="empty"><td colspan=' + colspan + '>No records were found</td></tr>'); 
     } else { 
      $('[id$=gvCompanyListing]').find('.empty').remove(); 
     } 
    } 

我的aspx代碼

<asp:GridView ID="gvCompanyListing" runat="server" AutoGenerateColumns="False" ShowHeader="False" GridLines="None" > 
    <Columns> 
     <asp:TemplateField> 
      <ItemTemplate> 
       <asp:CheckBox ID="cbSelect" CssClass="gridCB" runat="server" ItemStyle-Width="10%"></asp:CheckBox> 
      </ItemTemplate> 
     </asp:TemplateField> 
     <asp:BoundField DataField="client_name" SortExpression="CompanyInfo" ItemStyle-Width="92%" ItemStyle-Height="1px" ControlStyle-CssClass="companyInfo"> 
     </asp:BoundField> 
    </Columns> 
</asp:GridView> 
<table id="tblAssigned" runat="server"> 
</table> 

背後我有代碼,

protected void btnRequestAccess_Click(object sender, EventArgs e) 
{ 
try{ 
    System.Text.StringBuilder strBuild = new System.Text.StringBuilder(); 
    string strUserName = Session["UserName"].ToString(); 
    int nUserName = strUserName.Length; 
    int nRemaing = nUserName - 21; 
    //string strActualName = strUserName.Substring(21, nRemaing); 
    strBuild.Append("Request to set Clients to Hays user " + strUserName + "\n"); 
    int nval = 0;   
    for (int i = 0; i <= this.tblAssigned.Rows.Count; i++){     
     HtmlTable td = (HtmlTable)tblAssigned.FindControl("companyInfo"); 
     if (td != null){ 
      strBuild.Append(tblAssigned.Items[i].Text.ToString()+"\n") 
      nval = nval + 1; 
      } 
     } 
    } 
} 

如何獲得tblAssigned值作爲文本後面的代碼我做了什麼錯誤?

for (int i = 0; i < tblAssigned.Rows.Count; i++) 
     { 
     for (int j = 0; j < tblAssigned.Rows[i].Cells.Count; j++) 
     { 
      string cellValue= tblAssigned.Rows[i].Cells[j].InnerHtml; 
      // do something here 
     } 
     } 

我們可以像這樣訪問,但是代碼亙古不進入j循環

+2

表數據本身不會被髮回服務器。你需要表單控件。可能最容易做的事情就是創建隱藏的控件,然後一旦將它們發佈到服務器上,您可以通過[Request.Form](https://msdn.microsoft.com/en-us/) library/system.web.httprequest.form(v = vs.110).aspx)屬性。 – mason

+0

我不能讓你,對不起 – josna

回答

2

無法訪問已在JavaScript在服務器端回發

您可以使用隱藏字段後分配的值控制將表格數據存儲在客戶端,並且一旦頁面回發,您將能夠從服務器端從隱藏字段控件中檢索值。

例如

定義一個javacript全局變量用於插入的行數爲JavaScript陣列

變種計數器= 0;

創建JavaScript數組

變種ARR = [];

上新行創建插入在陣列的javascript對象{要在服務器側*訪問//*行數據}

ARR [計數器] =;

hiddenField.Value = arr;

服務器端按鈕單擊事件從隱藏字段獲取值

+0

在javascript/html中,「隱藏字段控件」是一個''。 –

相關問題