C# 已选择索引始终启用0回发,正在检查!回发不';我不想耍花招
我正在与DropDownList的C# 已选择索引始终启用0回发,正在检查!回发不';我不想耍花招,c#,asp.net,ajax,webforms,C#,Asp.net,Ajax,Webforms,我正在与DropDownList的SelectedIndex斗争。它似乎总是以0的形式返回。我正在填写一个基于linq查询结果的下拉列表。 从下拉列表中选择选项并点击Button1后,Button1返回SelectedIndex,该索引始终为0。 我已尝试在页面加载区域内添加if(!Page.IsPostback),这会将SelectedIndex更改为-1。。相关代码如下 <script runat="server"> int dropDownCounter = 0;
SelectedIndex
斗争。它似乎总是以0
的形式返回。我正在填写一个基于linq查询结果的下拉列表。
从下拉列表中选择选项并点击Button1后,Button1
返回SelectedIndex
,该索引始终为0
。
我已尝试在页面加载区域内添加if(!Page.IsPostback)
,这会将SelectedIndex
更改为-1
。。相关代码如下
<script runat="server">
int dropDownCounter = 0;
public string levelselected = null;
void Level_Index_Changed(Object sender, EventArgs e)
{
roledropdown.Controls.Clear();
CheckBox chkList1;
chkList1 = new CheckBox();
chkList1.Text = (LevelOptions.SelectedIndex.ToString());
chkList1.CssClass = "roleCheckBox";
chkList1.ID = "xxxx";
roledropdown.Controls.Add(chkList1);
roledropdown.Controls.Add(new LiteralControl("<br>"));
UpdatePanel.Update();
}
protected void Page_Load(object sender, EventArgs e)
{
AsyncScriptManager.RegisterAsyncPostBackControl(LevelOptions);
AsyncScriptManager.RegisterAsyncPostBackControl(Button1);
var levels = new List <SelectListItem>();
foreach(var x in userRoleQuery)
{
//Add the levels to a dropdown menue
ListItem gg = new ListItem();
gg.Text = "Hello";
gg.Value = (dropDownCounter.ToString());
if (dropDownCounter == 0)
{
gg.Selected = true;
levelselected = (x.LevelId.ToString());
}
LevelOptions.Items.Add(gg);
}
dropDownCounter++;
}
</script>
<asp:DropDownList ID="LevelOptions" runat="server" AutoPostBack="True" OnSelectedIndexChanged="Level_Index_Changed">
</asp:DropDownList>
<asp:UpdatePanel ID="UpdatePanel" runat="server" UpdateMode="Conditional">
<ContentTemplate>
<asp:Panel ID="roledropdown" runat="server">
</asp:Panel>
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="Button1" EventName="Click" />
</Triggers>
</asp:UpdatePanel>
<asp:Button ID="Button1" runat="server" Text="Update Both Panels" OnClick="Level_Index_Changed" />
int-dropDownCounter=0;
公共字符串levelselected=null;
无效级别索引已更改(对象发送方、事件参数e)
{
roledropdown.Controls.Clear();
复选框chkList1;
chkList1=新复选框();
chkList1.Text=(LevelOptions.SelectedIndex.ToString());
chkList1.CssClass=“roleCheckBox”;
chkList1.ID=“xxxx”;
roledropdown.Controls.Add(chkList1);
添加(新的LiteralControl(“
”);
UpdatePanel.Update();
}
受保护的无效页面加载(对象发送方、事件参数e)
{
AsyncScriptManager.RegisterAsyncPostBackControl(LevelOptions);
AsyncScriptManager.RegisterAsyncPostBackControl(按钮1);
变量级别=新列表();
foreach(userrolequiry中的变量x)
{
//将级别添加到下拉菜单
ListItem gg=新ListItem();
gg.Text=“你好”;
Value=(dropDownCounter.ToString());
如果(下拉计数器==0)
{
gg.Selected=true;
levelselected=(x.LevelId.ToString());
}
LevelOptions.Items.Add(gg);
}
下拉计数器++;
}
为什么按钮1
调用与从下拉列表中选择项目相同的函数?这似乎有点奇怪。我在一开始启动事件时遇到了一些困难,因此我添加了一个按钮,以在更改后对其进行测试。当您从按钮调用相同的函数时,按钮的选定索引为0,这并不是因为按钮没有选定的索引,但实际上是相同的。更改下拉列表中的选择时,您的结果是什么?