Я разрабатываю веб-приложение с огромной базой данных. У меня есть следующие таблицы в моей базе данных:Как создать таблицу для каждого значения HiddenField?
Group Таблица: GroupID, Groupname
курс Таблица: CourseID, CourseName, GroupID
Таблица пользователя: Имя пользователя, имя, Job
User_Course Таблица: Имя пользователя, CourseID
Первый атрибут - первичный ключ в каждой таблице, за исключением последней таблицы.
Теперь я пытаюсь создать таблицу для каждого типа курсов на основе значения GroupID. У меня есть три группы курсов. Я использую PlaceHolder, который я использую в HtmlTable. Я использовал этот метод для гибкости, потому что у меня много сложных вещей, которые не могут быть выполнены другими элементами управления, такими как GridView, и нет.
В любом случае, я мог бы создать таблицу, и все будет хорошо работать и хорошо. Теперь я хочу создать таблицу для каждой группы, конечно, исходя из значения GroupID, которое является HiddenField.
Мой код:
<asp:PlaceHolder ID="PlaceHolder1" runat="server" />
<asp:HiddenField ID="HiddenField1" runat="server" Value="1" />
<asp:SqlDataSource ID="SqlDataSource2" runat="server" ConnectionString="<%$ ConnectionStrings:testConnectionString %>" SelectCommandType="StoredProcedure" SelectCommand="kbiReport">
<SelectParameters>
<%--ControlParameter is linked to the HiddenField above to generate different GridView based on different values of GroupID--%>
<%--<asp:Parameter Name="GroupID" DefaultValue="3" />--%>
<asp:ControlParameter ControlID="HiddenField1" Name="GroupID" PropertyName="Value" />
</SelectParameters>
</asp:SqlDataSource>
<asp:Button ID="updateButton" runat="server" OnClick="updateButton_Click" Text="Update" />
и мой код-Behind:
//create a new HtmlTable object
HtmlTable table = new HtmlTable();
DataView dv = (DataView)SqlDataSource2.Select(DataSourceSelectArguments.Empty);
int columns = dv.Table.Columns.Count;
int rows = dv.Count;
//table's formating-related properties
table.Border = 2;
table.CellPadding = 3;
table.CellSpacing = 3;
//to get the css style
table.Attributes["class"] = "mGrid";
//create a new HtmlTableRow and HtmlTableCell objects
HtmlTableRow row;
HtmlTableRow header = new HtmlTableRow();
HtmlTableCell cell;
foreach (DataColumn column in dv.Table.Columns)
{
HtmlTableCell headerCell = new HtmlTableCell("th");
headerCell.InnerText = column.Caption;
header.Cells.Add(headerCell);
}
table.Rows.Add(header);
//loop for adding 5 rows to the table
foreach (DataRowView datarow in dv)
{
row = new HtmlTableRow();
row.BgColor = "yellow";
for (int j = 0; j < columns; j++)
{
cell = new HtmlTableCell();
if (j < 4)
{
cell.InnerText = datarow[j].ToString();
}
else
{
CheckBox checkbox = new CheckBox();
int checkBoxColumns = dv.Table.Columns.Count - 5;
string fieldvalue = datarow[j].ToString();
string yes = fieldvalue.Split(new string[] { ", " }, StringSplitOptions.RemoveEmptyEntries)[1];
string courseid = fieldvalue.Split(new string[] { ", " }, StringSplitOptions.RemoveEmptyEntries)[0];
checkbox.ID = row.Cells[3].InnerText + "," + courseid.Trim();
checkbox.Checked = yes.Equals("Yes");
cell.Controls.Add(checkbox);
}
//add the cell to the current row
row.Cells.Add(cell);
}
//add the row to the table
table.Rows.Add(row);
}
//add the table to the page
PlaceHolder1.Controls.Add(table);
Я знаю, что приведенный выше код должен быть внутри цикла, но я не как придумать с этим контуром ,
* не * задать вопрос повторно. – casperOne