2011-12-24 3 views
0

Я разрабатываю веб-приложение с огромной базой данных. У меня есть следующие таблицы в моей базе данных:Как создать таблицу для каждого значения 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); 

Я знаю, что приведенный выше код должен быть внутри цикла, но я не как придумать с этим контуром ,

+0

* не * задать вопрос повторно. – casperOne

ответ

1

Не используйте SqlDataSource, чтобы получить код-позади, оставьте его для привязки данных на стороне управления.

Используйте объект чистый ADO.NET вместо: SqlConnection, SqlCommand, SqlDataReader, например .:

using (SqlConnection connection = new SqlConnection(connectionString)) 
using (SqlCommand command = connection.CreateCommand()) 
{ 
    command.CommandText = commandText; 

    connection.Open(); 
    using (SqlDataReader reader = command.ExecuteReader()) 
    { 
     while (reader.Read()) 
     { 
      int id = (int)reader["ID"]; 
     } 
    } 
} 
+0

Я новый разработчик ASP.NET, и у меня уже есть много концепций, и я хочу использовать их, прежде чем переходить к другим концепциям. Не могли бы вы рассказать мне, как использовать его с SqlDataSource? – user1093651

+0

@User: Я обновил свой ответ. – abatishchev

+3

@User: Или лучше узнать, как использовать 'GridView' или' DetailsView'. Они построят для вас таблицу данных. – abatishchev

Смежные вопросы