私は巨大なデータベースを持つWebアプリケーションを開発しています。HiddenFieldの各値のテーブルを生成する方法は?
グループ表:グループID、GroupNameの
コース表:CourseID、CourseName、グループID
ユーザー表:ユーザー名、名前、仕事
User_Course私は、データベース内の次のテーブルを持っています表:ユーザー名、CourseID
最初の属性は、最後の表を除く各表の主キーです。
ここでは、GroupIDの値に基づいてコースの種類ごとにテーブルを作成しようとしています。私はコースの3つのグループを持っています。私はHtmlTableに使用しているPlaceHolderを使用しています。私はGridViewのような他のコントロールではできない多くの複雑なことがあるので、柔軟性のためにこのメソッドを使いました。
とにかく、私はテーブルを作成することができ、すべて正常に動作します。ここでは、HiddenFieldであるGroupIDの値に基づいて、各グループのテーブルを生成したいと考えています。
マイコード:
<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" />
と私のコードビハインド:
//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