【问题标题】:__doPostBack not working inside GridView DropDownList__doPostBack 在 GridView DropDownList 中不起作用
【发布时间】:2014-09-15 10:53:23
【问题描述】:

作为主题,我有一个由下拉列表组成的项目模板,当用户尝试单击它时,应发出警告以警告用户是否继续。单击确定后,没有任何反应,它不会返回回发

我的项目模板的gridview代码如下:

<asp:TemplateField HeaderText="Status">                
    <ItemTemplate>
        <asp:DropDownList ID="cboStatus" runat="server" AutoPostBack="True">
        </asp:DropDownList>
    </ItemTemplate>                
</asp:TemplateField>

我的代码后面会将 JavaScript 设置为属性

DropDownList cboStatus= (DropDownList)e.Row.FindControl("cboStatus");
cboStatus.Attributes.Add("onChange",  "Confirmation();");

JavaScript:

function Confirmation() {
    if (confirm('Are you sure you want to do this?')) {
        __doPostback(this, 'Select${0}');
    }
}

我希望我的回发调用这个函数

protected void cboStatus_Click(object sender, EventArgs e)
{
    //Some Code
}

【问题讨论】:

  • 看看如何 __doPostback(this, 'Select${0}');被渲染
  • 嗨@wintermute 你是什么意思?
  • 尝试使用 OnSelectedIndexChanged 而不是 onChange。
  • 你在哪里分配cboStatus_Click处理程序?

标签: c# javascript asp.net gridview


【解决方案1】:

如下所示更改您的代码。这已经在本地进行了测试,可以正常工作。如果单击确认窗口中的Ok,则以下代码将触发服务器事件以进行选择更改,否则不会。

您的 gridview 模板定义

<asp:TemplateField HeaderText="Status">                
   <ItemTemplate>
        <asp:DropDownList ID="cboStatus" runat="server" AutoPostBack="true" onchange="return Confirmation ();" OnSelectedIndexChanged="cboStatus_SelectedIndexChanged">
        </asp:DropDownList>
    </ItemTemplate>                
</asp:TemplateField>

onchange 事件的 JavaScript 函数

function Confirmation() {
    if (confirm('Are you sure you want to do this?')) {
        __doPostBack('__Page', '');
    }
    return false;
}

最后是SelectedIndexChanged 的服务器事件

 protected void cboStatus_SelectedIndexChanged(object sender, EventArgs e)
 {
      // Some code
 }

【讨论】:

  • 嗨,@Dennis R 通过添加 OnSelectedIndexChanged="cboStatus_SelectedIndexChanged" 即使我按下取消它仍然会触发 cboStatus_SelectedIndexChanged
  • @abccba 它确实对我有用。我在if 语句之后只用return false; 编辑了function Confirmation() 的代码。如果有帮助,请尝试。还要确保您的cboStatus 已附加onchange="return Confirmation ();",并且您已通过后面的代码删除了您在原始代码中附加的onChange 事件。
  • 感谢您的努力,它有效,但我发现了一个小问题,即每当按下 CANCEL 时,下一次单击 OK,不会触发回发,您知道是什么问题导致的吗? ?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-03-18
  • 1970-01-01
  • 2021-08-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多