单击 <asp:button> 后,将变量(例如数组)从一个 <asp:ListItem> 传递到另一个(参见 <asp:DropDownList>)

Pass variables (e.g. array) from one <asp:ListItem> to another one (cf.<asp:DropDownList>) after clicking on <asp:button>

大家早上好

我一直想知道如何在单击 <asp:Button OnClick> 后将变量从一个 <asp:ListItem>(参见 asp:DropDownList)传递到另一个,因为由于 auto-refresh。为了说明我的观点:

上Page.aspx

<asp:DropDownList ID="test" runat="server" style="font-size:14px;text-align:center;border-radius:0; 
CssClass="ddl">                              
<asp:ListItem>&nbsp;&nbsp;&nbsp;&nbsp;checkfruit</asp:ListItem>
<asp:ListItem>;&nbsp;&nbsp;&nbsp;&nbsp;verify</asp:ListItem>
<asp:ListItem>bsp;&nbsp;testcheck</asp:ListItem>                           
 </asp:DropDownList>
<asp:Button OnClick="test_Click" return="false" ID="veg" Text="Submit" runat="server" style="margin- 
 left:30px; border-radius:0; width:90px;/>

代码Behind.cs

```public double[] pte = new double[3]; //

protected void test_Click(object sender, EventArgs e)
{

string a = test.SelectedItem.Value;

switch(a)
{

case "verify":
double[] d = new double[3];
d = [8,2,1];
pte = d; 
break;

case "testcheck":
double c;
c = pte[0] + 1;
break;
}
}

目的是在依次单击这些选项后将 p 的值从 verify 传递到 testcheck,从而在 testcheck 中生成 c = 9。问题是,由于 test_Click 固有的 auto-refresh,当一个人从 verify 切换到 testcheck 时,p 被重新初始化为 0,并且设置 return="false"page.aspx 至今没有改善这件事。理想情况下,我想通过在 testcheck 中重新定义 d 来避免重复代码。因此,我们将不胜感激您的反馈。

最佳,

要从 PostBack 中保留在 pte 中设置的值,请​​将其保存到 ViewState

protected void test_Click(object sender, EventArgs e)
{
    string a = test.SelectedItem.Value;

    switch (a)
    {

        case "verify":
            double[] d = new double[3] { 8, 2, 1 };
            //d = [8, 2, 1];
            pte = d;
            ViewState["pte"] = pte; // Save values
            break;

        case "testcheck":
            double c;
            pte = ViewState["pte"] as double[]; // Read values
            c = pte[0] + 1;
            break;
    }
}