【发布时间】:2014-06-04 16:38:15
【问题描述】:
我的 asp.net 网络表单上有一个GridView,其中所有列和行都是用 C# 代码从后面创建的。除第一列外,每列中的每个单元格都是DropDownList 和DataSource。
这是我的GridView:
<asp:GridView ID="gv_Rota" runat="server" AutoGenerateColumns="false" OnRowDataBound="gv_Rota_RowDataBound">
<HeaderStyle BackColor="#6a3d98" ForeColor="White" Height="20" />
<RowStyle HorizontalAlign="Center" Height="20px" Width="100px" />
<AlternatingRowStyle Height="20px" />
</asp:GridView>
以及列和单元格的c#创建:
private void BindGrid(int Amount)
{
gv_Rota.DataSource = null;
gv_Rota.Columns.Clear();
BoundField bfield = new BoundField();
bfield.HeaderText = "Days";
bfield.DataField = "Days";
gv_Rota.Columns.Add(bfield);
for (int i = 0; i < Amount; i++)
{
int week = i + 1;
string sWeek = "Week " + week.ToString();
TemplateField tfield = new TemplateField();
tfield.HeaderText = sWeek;
gv_Rota.Columns.Add(tfield);
}
DataTable dt = new DataTable();
dt.Columns.Add(new DataColumn("Days", typeof(string)));
dt.Rows.Add("M");
dt.Rows.Add("T");
dt.Rows.Add("W");
dt.Rows.Add("T");
dt.Rows.Add("F");
dt.Rows.Add("S");
dt.Rows.Add("S");
gv_Rota.DataSource = dt;
gv_Rota.DataBind();
}
然后在我的GridView 的RowDataBound 触发器上,我将DropDownList 控件添加到每个单元格:
protected void gv_Rota_RowDataBound(object sender, GridViewRowEventArgs e)
{
for (int i = 1; i <= ColumnCount; i++)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
ddlShift = new DropDownList();
ddlShift.ID = "ddlShift";
ddlShift.DataSource = DCListOfShifts;
ddlShift.DataValueField = "SHIFT_ID";
ddlShift.DataTextField = "SHIFT_NAME";
ddlShift.DataBind();
ddlShift.Items.Insert(0, new ListItem("Shift..."));
ddlShift.CssClass = "ddl_rotamanager";
e.Row.Cells[i].Controls.Add(ddlShift);
}
}
}
例如在我的页面上显示的内容:
所以我的问题和问题是我现在想将每一列(第一列除外)保存到数据库中,作为“预定周”,并且不知道如何获取所有或任何中选定项目的值DropDownLists 然后将其传递回数据库。 请记住,这不是在 selectedindexchanged 上完成的。我将从所有DropDownLists 中选择项目,然后按一个按钮提交值。 请有人给我一些关于如何完成的重点吗?谢谢。
编辑 1: 响应解释了我如何在一行或单个单元格中获取 DropDownList 的每个值。但是,现在我需要更具体地了解如何在 列 而不是行中获取特定单元格的值。是否有可能进一步强调这一点?
【问题讨论】:
标签: c# asp.net gridview drop-down-menu webforms