【发布时间】:2018-04-16 10:04:37
【问题描述】:
我正在查询一个用值填充 gridview 的数据库,还将下拉框添加到 dataview 'onrowdatabound' 内的每个单元格中,以便在填充 gridview 时填充这些 DDL。
我希望能够单击一个按钮以从这些 DDL 中获取值,但是当单击该按钮时会发生回发并且所有 DDL 都消失了,它为我提供了 DDL 的默认值。
我认为它们消失了,因为它们没有在页面加载时被调用(我似乎无法这样做,因为它们被称为 onrowdatabound)
<asp:GridView id="View" name="Spview" onrowdatabound="populateCellswithDDls" runat="server"></asp:GridView>
使用循环每个单元格的“populateCellswithDDls”函数添加 ddl:
e.Row.Cells[i].Controls.Add(DDL1);
接下来我要玩的是 ViewState 和 Sessions 以在回发时保存下拉列表(尝试在 'populateCellswithDDls' 函数中创建会话:
DropDownList DDL1 = new DropDownList();
//I've tried newSkillsMon.AutoPostBack = true; but this just removes them all too
Session.Add("ViewState", View);
Session.Add("DropdownState", DDL1);
我已经尝试了各种方法来处理视图状态和会话,但不确定在哪里使用它们来保存“onrowdatabound”人口的状态。
我的按钮目前看起来像这样:
protected void confirm_Click(object sender, EventArgs e){
{foreach (GridViewRow row in View.Rows)
// if (DDL1.SelectedItem.Value != "Select Item"){
if (IsPostBack)
{
Debug.WriteLine(DDL1.SelectedValue);
}
这只是给了我 X 数量的“选择项目”,而不是我在 DDL 中选择的内容
我缺少什么,我应该在哪里添加这些会话以保留由 onrowdatabound 创建的 ddl?
谢谢
【问题讨论】:
-
你在page_load中绑定你的gridview吗?
标签: c# asp.net session gridview dynamic