我想设计一个表,其行通过xml从另一个aspx页面检索。
假设我有一个页面getstudents.aspx
,它以下列格式为数据库中的所有学生提供:
<?xml version="1.0" encoding="utf-8"?>
<allstudents>
<student>
<rollno>8001</rollno>
<name>AAAA</name>
</student>
<student>
<rollno>8002</rollno>
<name>BBBB</name>
</student>
</allstudents>
这样我从getstudents.aspx
获取数据。
现在我想设计一个页面selectstudents.aspx
哪个输出跟html(每行有一个复选框的表)
通过以下方式:
<head>
<script type="text/javascript">
var values[];
function add(x)
{
//adds the value of ticked checkbox in values array and removes it when unticked
}
</script>
</head>
<body>
<table>
<tr>
<td> </td>
<td>Name</td>
<tr>
<td><input type="checkbox" name="cbRoll" value="8001" id="cbRoll8001" /></td>
<td>AAAA</td>
</tr>
<tr>
<td><input type="checkbox" name="cbRoll" value="8002" id="cbRoll8002"/></td>
<td>BBBB</td>
</tr>
</table>
<form id="form1" name="form1">
</form>
</body>
带有复选框的表是在运行时动态生成的 复选框的id,复选框的值(8001,8002等)以及下一个相应列中的名称(AAAA,BBBB等)。 通过读取页面getstudents.aspx给出的xml数据 也 只要勾选了一个复选框,就应该调用一个函数(比如说)addremove(this.id) 或者未标记的,应该在名为(例如)'values'的字符串数组中添加或删除checkbox(8001,8002等)的值。 然后我将通过POST向网页提交一个包含“8001; 8002; 8003等”的字符串 取决于选中的复选框 显然我将从数组'values'中创建字符串。
我不想在asp.net中使用现成的用户控件。 我想要做的比这更复杂,但这是它的简化版本。
为此,aspx页面的结构应该是什么,C#中的代码应该是什么?
答案 0 :(得分:0)
在selectstudents.aspx
页面上,有一个&gt; NET Literal控件,您希望表格出现在哪里:
<body>
<form id="form1" name="form1">
<asp:Literal runat="server" id="ltrStudents" />
</form>
</body>
然后在该页面的代码隐藏中,让学生使用XML并从中创建一个表格,如下所示:
string xml =
@"<?xml version='1.0' encoding='utf-8'?>
<allstudents>
<student>
<rollno>8001</rollno>
<name>AAAA</name>
</student>
<student>
<rollno>8002</rollno>
<name>BBBB</name>
</student>
</allstudents>";
var studentsXml = XDocument.Parse(xml);
var students = studentsXml.Element("allstudents").Elements("student").ToList();
StringBuilder sb = new StringBuilder(500);
sb.Append("<table>");
foreach (var student in students)
{
string rollNumber = student.Element("rollno") != null ? student.Element("rollno").Value : string.Empty;
string name = student.Element("name") != null ? student.Element("name").Value : string.Empty;
sb.Append("<tr>");
sb.Append("<td> </td>");
sb.Append("<td>Name</td>");
sb.Append("</tr>");
sb.Append("<tr>");
sb.AppendFormat("<td><input type='checkbox' name='cbRoll' value='{0}' id='cbRoll{0}' /></td>", rollNumber);
sb.AppendFormat("<td>{0}</td>", name);
sb.Append("<tr/>");
}
sb.Append("</table>");
ltrStudents.Text = sb.ToString();
尝试以上代码,看看它是否对您有所帮助。您可能需要设置ltrStudents控件的Mode
属性 - 请检查this以获取帮助。
至于JavaScript,我的jQuery真的很生疏,但在ASPX中你可以拥有:
$(document).ready(
function() {
$("input[type=checkbox]").click(function(){
alert($(this).attr('value')); // Store the rollno using a global variable.
});
});
我只是在这里使用alert()
来证明一个观点。在您的代码中,您需要将rollno存储在变量中。