거대한 데이터베이스가있는 웹 응용 프로그램을 개발 중입니다.HiddenField의 각 값에 대한 테이블을 생성하는 방법은 무엇입니까?
그룹 표 : 그룹 ID, 그룹 이름
코스 테이블 : 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