使用jquery我将gridview值附加到表中。 如何在后面的代码中读取动态创建的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循环
答案 0 :(得分:3)
在回发后,您无法访问在服务器端javascript中分配的值
您可以使用隐藏字段控制在客户端将表数据存储在其中,一旦页面回发,您将能够从隐藏字段控制中检索服务器端的值。
e.g。
定义一个javacript全局变量,用于将行数插入javascript数组
var counter = 0;
创建一个javascript数组
var arr = [];
在创建的新行上在数组中插入一个javascript对象
arr [counter] = {/ *您想在服务器端访问的行数据* /};
hiddenField.Value = arr;
在服务器端按钮单击事件从隐藏字段中获取值