我想我在使用列表框时发现了一个错误。示例:带有 Editbutton 的 ListBox 将其加载到特殊字段中:
列表框有 4 个项目:
- 电话号码:+15454545(值 2)(索引 0)
- 电子邮件:Test@testmail.com(值 1)(索引 1)
- 传真号码:+1515515151(值 3)(索引 2)
- 电子邮件:Test2@testmail.com(值 1)(索引 3)
然后是editbuttoncode:
protected void EditKOFC(object sender, EventArgs e)
{
try
{
if (ListBoxKOFC.SelectedItem == null)
{
LabelMPE.Text = "Please select first!";
ModalPopupExtender1.Show();
}
else
{
string value = ListBoxKOFC.SelectedValue;
Session["EditID"] = ListBoxKOFC.SelectedIndex;
string[] meineStrings = ListBoxKOFC.SelectedItem.Text.Split(new Char[] { ':' });
string text = meineStrings[1];
string text2 = text.Substring(1);
TextBoxKOFC.Text = text2;
foreach (ListItem item in DropDownListKOFC.Items)
{
item.Selected = false;
if (item.Value == value)
{
item.Selected = true;
}
}
editing = true;
AddKOFC.Text = "Save";
}
}
catch (Exception ex)
{
GlobalFunctions.Error_Log(ex, ex.TargetSite.ToString());
}
}
我得到了问题。当我选择前三个项目时,一切都很好。当我选择第 4 项时,它会使用第二项中的所有数据,即使它们有不同的索引!
Value 是否会影响此处的索引,如果是,为什么?这对我来说确实是个问题,因为我需要将联系人类型存储在值中。(1 = 电子邮件,2 = 电话等);
已经谢谢了!
编辑:澄清:编辑按钮是列表框外的按钮本身。
<asp:TableRow>
<asp:TableCell>
<asp:UpdatePanel runat="server" UpdateMode="Conditional" ID="UpdatePanel2">
<Triggers>
<asp:AsyncPostBackTrigger ControlID="AddKOFC" EventName="Click" />
</Triggers>
<ContentTemplate>
<asp:DropDownList runat="server" ID="DropDownListKOFC" />
</ContentTemplate>
</asp:UpdatePanel>
</asp:TableCell>
<asp:TableCell>
<asp:UpdatePanel runat="server" UpdateMode="Conditional" ID="UpdatePanel1">
<Triggers>
<asp:AsyncPostBackTrigger ControlID="AddKOFC" EventName="Click" />
</Triggers>
<ContentTemplate>
<asp:TextBox runat="server" ID="TextBoxKOFC" />
</ContentTemplate>
</asp:UpdatePanel>
</asp:TableCell><asp:TableCell>
<asp:UpdatePanel runat="server" UpdateMode="Conditional" ID="UP2">
<ContentTemplate>
<asp:Button runat="server" ID="AddKOFC" OnClick="AddContactInformation" Text="Add Contactinformation" />
<asp:HiddenField ID="HFAdd" runat="server" />
<ajaxToolkit:ModalPopupExtender ID="ModalPopupExtender1" runat="server" BackgroundCssClass="modalBackground"
TargetControlID="HFAdd" PopupControlID="PanelChoose" BehaviorID="MPEchoose">
</ajaxToolkit:ModalPopupExtender>
<asp:Panel ID="PanelChoose" runat="server" BorderStyle="Solid" BackColor="ButtonShadow">
<asp:Label ID="LabelMPE" runat="server"></asp:Label>
<asp:Table ID="Table3" runat="server">
<asp:TableRow>
<asp:TableCell>
<asp:Button ID="ButtonOK" runat="server" Text="Ok" />
</asp:TableCell>
</asp:TableRow>
</asp:Table>
</asp:Panel>
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="AddKOFC" EventName="Click" />
<asp:AsyncPostBackTrigger ControlID="ButtonOK" EventName="Click" />
</Triggers>
</asp:UpdatePanel>
</asp:TableCell></asp:TableRow>
<asp:TableRow>
<asp:TableCell>
<asp:Label ID="Label13" runat="server"></asp:Label>
</asp:TableCell></asp:TableRow>
<asp:TableRow>
<asp:TableCell>
<asp:UpdatePanel runat="server" UpdateMode="Conditional" ID="UP3">
<Triggers>
<asp:AsyncPostBackTrigger ControlID="AddKOFC" EventName="Click" />
</Triggers>
<ContentTemplate>
<asp:ListBox runat="server" ID="ListBoxKOFC" ToolTip="The way to contact this person">
</asp:ListBox>
</ContentTemplate>
</asp:UpdatePanel>
</asp:TableCell><asp:TableCell>
<asp:Button ID="ButtonUpdate" runat="server" Text="Edit" OnClick="EditKOFC" />
</asp:TableCell><asp:TableCell>
<asp:Button ID="ButtonDelete" runat="server" Text="Delete" OnClick="DeleteKOFC" />
</asp:TableCell></asp:TableRow>
<asp:TableRow>
Edit2以获得更多说明(或其他):
这就是它的外观。然后我想编辑第四项:
当我调试时:
第4项没有被选中……即使你在之前的图片中看到,它也是!
如果我查看 ListBoxKOFC 本身:
代码完成后,错误的项目被选中并加载以进行编辑:
但正如您在 4. Screenshot -> 我要编辑的项目的索引中看到的那样,是 3。只有值是相同的。但是为什么值不能相同,索引总是另一个...
值是否在这里用作索引?!(不可能,但 atm 我不确定了......)还是价值只是被窃听了?