【发布时间】:2015-11-12 20:33:25
【问题描述】:
所有信息都在下面,但主要思想是这样的: 我希望能够根据事件编号在我的中继器控件中显示或隐藏列。例如,事件 5 将显示某些列,例如姓名和地址,并隐藏其他列,例如电话和电子邮件。我想我可以以某种方式分配一个 1 或 0 来注意哪些应该使用或不使用。事件 5 使用 Name 将是 51,不使用 Phone 将是 50。如何实现,不确定。
信息: 我正在为会议构建一个网络应用程序。将有管理员可以创建网络表单供人们注册会议。我希望管理员能够控制他们为注册人收集的字段。仅出于测试目的,他们可以收集的字段包括名字、姓氏、地址、电子邮件、电话和衬衫尺寸
Table: Registrant
Columns: Id, EventId, FirstName, LastName, Address, Email, Phone, ShirtSize
根据会议的不同,会有某些字段未使用。例如,会议 1 想要收集 ShirtSize 数据,但会议 2 不想收集 ShirtSize 数据。
我在 Visual Studio 中使用Repeater 控件,该控件当前从Registrant 生成所有列。
ASP
<asp:Repeater ID="Repeater1" runat="server">
<ItemTemplate>
<asp:Label ID="lblTest" runat="server" Text='<%# Eval("MyColumn") %>'></asp:Label>
<asp:TextBox ID="textTest" runat="server"></asp:TextBox>
</ItemTemplate>
</asp:Repeater>
C#
DataTable table = new DataTable();
table.Columns.Add("MyColumn", typeof(string));
using (SqlConnection sqlConn2 = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnString"].ConnectionString))
{
sqlConn2.Open();
using (SqlCommand sqlCmd2 = new SqlCommand())
{
sqlCmd2.Connection = sqlConn2;
sqlCmd2.CommandType = System.Data.CommandType.Text;
sqlCmd2.CommandText = string.Format("SELECT COLUMN_NAME AS MyColumn FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = @TableName");
//sqlCmd2.CommandText = string.Format("SELECT COLUMN_NAME AS MyColumn FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = @TableName" AND SHOW = @Show);
sqlCmd2.Parameters.Add("@TableName", SqlDbType.NVarChar).Value = "registrant";
//sqlCmd2.Parameters.Add("@Show", SqlDbType.NVarChar).Value = "show";
sqlCmd2.ExecuteNonQuery();
using (SqlDataReader sqlReader = sqlCmd2.ExecuteReader())
{
while (sqlReader.Read())
{
DataRow tableRow = table.NewRow();
tableRow["MyColumn"] = sqlReader["MyColumn"].ToString();
table.Rows.Add(tableRow);
}
Repeater1.DataSource = table;
Repeater1.DataBind();
}
sqlConn2.Close();
}
}
}
我想要一种根据事件显示正确列的方法。例如,如果事件是 5,则显示 FirstName、LastName 和 Address。我想在我的数据库本身中实现它,而不是通过我的 C# 代码,因为当一切都完成后,这将是一个大型 Web 应用程序。我认为可能是某种触发因素,但我是数据库新手,并不完全确定。我正在使用 SQL Server Management Studio。在我的 C# 代码中,我注释掉了 2 行,一旦我确定了我的问题的数据库结构,就可能使用它们。
【问题讨论】:
-
使用存储的过程或视图来控制输出。
标签: c# asp.net sql-server database