Динамически создать таблицу с asp.net - PullRequest
0 голосов
/ 30 мая 2011

Я хочу создать таблицу, строки которой извлекаются из другой страницы aspx через xml.Скажем, у меня есть страница 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>&nbsp;</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>

Таблица с флажками динамическигенерируется во время выполнения с идентификатором флажка, значением флажка (8001 8002 и т. д.) и именем (AAAA, BBBB и т. д.) в следующем столбце, соответствующем сопоставлению.При чтении данных из xml, предоставленных страницей getstudents.aspx, также следует вызывать функцию (скажем) addremove (this.id) всякий раз, когда отмечен или снят флажок, который должен добавлять или удалять значение флажка (8001,8002 и т. Д.) Для/ из строкового массива с именем (скажем) 'значения'.Затем я отправлю на веб-страницу строку через POST, содержащую «8001; 8002; 8003 и т. Д.», В зависимости от того, какие флажки установлены, очевидно, я сделаю строку из массива «значения».

Я не хочу использовать готовые пользовательские элементы управления, доступные в asp.net.То, что я хочу сделать, является более сложным, чем это, но это упрощенная версия.

Итак, для чего должна быть структура страницы aspx и что должно быть в C #?

1 Ответ

0 голосов
/ 30 мая 2011

На странице selectstudents.aspx укажите элемент управления> 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>&nbsp;</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();

Попробуйте приведенный выше код и посмотрите, поможет ли он вам.Возможно, вам потребуется установить свойство Mode элемента управления ltrStudents - проверьте 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 в переменной.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...