1

我有一个有 2 个投递箱的页面。第二个下拉框中的数据将根据第一个下拉框中的所选数据而变化。第一个下拉框的更改数据在客户端脚本中。现在我尝试在服务器的第二个下拉框中获取所选值一边,但没有。如何解决这个问题?

以下是代码:

<div class="field">
    <input type="hidden" id="ddlFormatOriginalData" name="ddlFormatOriginalData" runat="server" />
    <asp:DropDownList ID="d1" runat="server">
    </asp:DropDownList>
</div>

<div class="field">
    <input type="hidden" id="ddlFormatOriginalData" name="ddlFormatOriginalData" runat="server" />
    <asp:DropDownList ID="d2" runat="server">
    </asp:DropDownList>
</div>

Javascript 端

$addHandler(ddlFormat, 'change', upDateD2);

function upDateD2(sender) {

    var PaperList = $get(ddlPaperStockID); // gets the list for a certain selected value in d1

    for (j = 0; j < PaperList.options.length; j++) {
        // added List here to d2
    }
}

服务器端

string val = d2.selected.value;

但是我没有得到任何 val 虽然在萤火虫中显示了 d2 投递箱的不同列表。

4

2 回答 2

0

尝试使用 JQuery 数据 - 例如:

<div id="test" data-cool="demo"></div>

在 JS 中:

$("#test").data("cool"); // outputs: 'demo'

您还可以使用它来设置更新变量:

$("#test").data("cool", "really cool!"); // updates the data-cool field to: 'really cool!'
于 2013-02-20T05:57:21.740 回答
0

您可以使用如下

protected override void OnInit(EventArgs e)
{
     var postedOptionValue = Request.Form[d2.UniqueID];
     d2.Items.Add(new ListItem(postedOptionValue));
     base.OnInit(e);
}

但是您应该注意以下异常

Invalid postback or callback argument.  

使用启用事件验证

   <pages enableEventValidation="true"/> 

在配置或

    <%@ Page EnableEventValidation="true" %> 

在一个页面中。出于安全目的,此功能验证回发或回调事件的参数是否源自最初呈现它们的服务器控件。
如果数据有效且符合预期,请使用 ClientScriptManager。
RegisterForEventValidation 方法,以便注册回发或回调数据以进行验证。

编辑 1

更多阅读 -
无效的回发或回调参数。当使用 jquery 填充下拉列表并且有回发时

于 2013-02-20T05:44:08.690 回答