asp.net - 检索 RowUpdating 事件中的 DropDownList 值 asp.net

标签 asp.net drop-down-menu updating

这是我的 aspx 代码:

<EditItemTemplate>
   <asp:DropDownList ID="ddlTotalColumn" runat="server">
       <asp:ListItem Value="">Select value</asp:ListItem>
       <asp:ListItem Value="0">1</asp:ListItem>
       <asp:ListItem Value="1">2</asp:ListItem>
   </asp:DropDownList>
</EditItemTemplate>

我的 aspx.cs 代码:

protected void gvTest_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
    GridViewRow selected_row = gvTest.Rows[e.RowIndex];

    var total_column_drop_down_list = (DropDownList)selected_row.FindControl("ddlTotalColumn");

    int column_string = Convert.ToInt32(total_column_drop_down_list.SelectedItem.Value);

    gvTest.EditIndex = -1;
    ...
}

在这一行:int column_string = Convert.ToInt32(total_column_drop_down_list.SelectedItem.Value); 我遇到错误:“输入字符串格式不正确”,因为“total_column_drop_down_list.SelectedItem.Value”将返回空字符串 ("")。

那么有什么好主意吗?

最佳答案

听起来您犯了一个典型的错误,即没有将数据绑定(bind)代码放入 if (!Page.IsPostBack) block 中。因此,您的 GridView 会重新绑定(bind),并且您会在 RowUpdating 事件中获得默认值(而不是您选择的值)。

无论您在何处绑定(bind) GridView,例如在 Page_Load 中,您都需要执行以下操作:

if (!Page.IsPostBack)
{
    BindGrid();
}

其中“BindGrid()”是您调用的用于数据绑定(bind) GridView 的任何代码。


在一个稍微不相关的注释中,您实际上可以使用 GridViewUpdateEventArgs传递给该方法的参数以获取更新的值(而不是使用 FindControl 获取 DropDownList,然后获取值)。

关于asp.net - 检索 RowUpdating 事件中的 DropDownList 值 asp.net,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18235582/

相关文章:

c# - 带有复选框的 asp.net 下拉列表

javascript - 使用 ajax 调用在 GridView 中显示评论

javascript - 如何更改标签的文本?

javascript - 单页应用程序的验证码

css - 我不明白为什么我的下拉菜单没有隐藏

html - 如何在不编辑我的 html 的情况下制作下拉菜单

jquery - 使用 jQuery 更新表行

asp.net - 如何仅清除 ASP.NET DropDownList 中的数据绑定(bind)项,而不清除 Source 中添加的任何项?

php - 不插入数据库。 PHP 和 MySQL

javascript - selection.enter() 不是函数