我在我的项目中使用asp:table。我在表中动态添加行。
第一个标题行插入页面加载事件中。
标题行有一些复选框。选中任何复选框后,会在$('input:checkbox:not(:disabled)').removeAttr('checked');
事件中插入新行。
这个新行有一个动态创建的文本框,我在其中从用户那里获取一些输入。
在给出输入后,用户必须单击在数据库中插入数据的checkedChange()
按钮。
Add Data
事件中创建的行会在OnCheckedChanged
发生任何事件时被删除。
我尝试过EnableViewState,但它仍无效。
我该如何解决这个问题?
这是我的aspx代码:
postback
以下是CheckedChangedEvent的.cs代码:
<asp:Table ID="tbl_fundtype" runat="server" CssClass="table-bordered tblfund" style="width:50%; white-space:nowrap;" EnableViewState="true">
</asp:Table>
这里我试图通过点击按钮获取已检查更改事件中Created Rows的值。
public void Chk_Fund_CheckedChange(object sender, EventArgs e)
{
TableRow tr = new TableRow();
for (int i = 0; i < tbl_fundtype.Rows[0].Cells.Count; i++)
{
string DynamicChkID = "fund_" + dt_fundtype.Rows[i]["fund_type_cd"].ToString();
CheckBox chk = new CheckBox();
chk = (CheckBox)tbl_fundtype.Rows[0].Cells[i].FindControl(DynamicChkID);
TableCell td = new TableCell();
if (chk.Checked == true)
{
TextBox txt = new TextBox();
txt.ID = "txt_" + dt_fundtype.Rows[i]["fund_type_cd"].ToString();
txt.Attributes.Add("Placeholder","Enter Share Percent...");
td.Controls.Add(txt);
}
else
{
td.Text = " ";
}
tr.Cells.Add(td);
}
tbl_fundtype.Rows.Add(tr);
hfTab.Value = "fund";
collapsestate = "expand";
}
这是在页面加载事件中插入标题行:
public bool ValidateAddNominee()
{
if (txt_nomineename.Text == "")
{
lbl_nomineeErr.Text = "Please Enter Nominee Name";
return false;
}
else if (txt_nomineecnic.Text == "")
{
lbl_nomineeErr.Text = "Please Enter Nominee CNIC";
return false;
}
//Count if any of the nominee is selected
int countShares = 0;
for (int i = 0; i < tbl_fundtype.Rows[0].Cells.Count; i++)
{
string DynamicChkID = "fund_" + dt_fundtype.Rows[i]["fund_type_cd"].ToString();
CheckBox chk = new CheckBox();
chk = (CheckBox)tbl_fundtype.Rows[0].Cells[i].FindControl(DynamicChkID);
if (chk.Checked == true)
{
countShares++;
TextBox txt = new TextBox();
string DynamicTxtID = "txt_" + dt_fundtype.Rows[i]["fund_type_cd"].ToString();
int chek = tbl_fundtype.Rows.Count;
txt = (TextBox)tbl_fundtype.Rows[1].Cells[i].FindControl(DynamicTxtID);
if (txt.Text=="")
{
lbl_nomineeErr.Text = "Please Enter Share Percent for "+ dt_fundtype.Rows[i]["fund_type"].ToString();
return false;
}
}
}
if (countShares == 0)
{
lbl_nomineeErr.Text = "Please Select any Fund Type";
return false;
}
else if (!file_nominee.HasFile)
{
lbl_nomineeErr.Text = "Please attach Nominee CNIC";
return false;
}
else
{
return true;
}
}
它显示我的行数是1但它应该是两个,第一个是标题行,另一个应该是在已检查的已更改事件中创建的行。
答案 0 :(得分:0)
您需要在aspx页面中添加更新面板 -
new Select(driver.findElement(By.id("seats"))).selectByValue("4");
答案 1 :(得分:0)
对于Web方法,下面是Javascript代码
<script type="text/javascript">
//function to convert HTML table to jagged array//
var HTMLtbl =
{
getData: function (table) {
var data = [];
table.find('tr').not(':first').each(function (rowIndex, r) {
var cols = [];
$(this).find('td').each(function (colIndex, c) {
if ($(this).children(':text,:hidden,textarea,select').length > 0) //text//hidden//textarea//select
cols.push($(this).children('input,textarea,select').val());
// if dropdown text is needed then uncomment it and remove SELECT from above IF condition//
// else if ($(this).children('select').length > 0)
// cols.push($(this).find('option:selected').text());
else if ($(this).children(':checkbox').length > 0) // checkbox
cols.push($(this).children(':checkbox').is(':checked') ? 1 : 0); //or true false
else if ($(this).children(':input').length > 0)
cols.push($(this).children(':input').val());
else
cols.push($(this).text().trim()); // get td Value
});
data.push(cols);
});
return data;
}
}
// event to fire on Save button click //
$(document).on('click', '#btnSave', function () { //Change '#btnSave' to '#AddButtonId'
var data = HTMLtbl.getData($('#tbl_fundtype')); // passing that table's ID //
var parameters = {};
parameters.array = data;
var request = $.ajax({
async: true,
cache: false,
dataType: "json",
type: "POST",
contentType: "application/json; charset=utf-8",
url: "prescribe.aspx/SaveData", //Change "prescribe.aspx" to your page name.
data: JSON.stringify(parameters),
});
});
</script>
代码中的[VB中的代码,将它们转换为C#] -
<WebMethod> _
Public Shared Sub SaveData(array As String()())
'Now Save the data from array [loop through the array]
Dim s_Result as String
s_Result=array(0)(0).ToString
End Sub
答案 2 :(得分:0)
尝试将表保存到会话中,然后在回发期间加载它,它对我有效:)
protected void Page_Init(object sender, EventArgs e)
{
if (!IsPostBack)
{
Session["tbl_fundtype"] = tbl_fundtype;
}
tbl_fundtype = (Table)Session["tbl_fundtype"];
}