0

我被困在这个问题上,似乎找不到解决办法。我有一个 CheckBoxList 控件。如果您不知道,CheckBoxList 控件上的 FindControl() 方法会返回“this”。微软这样做是因为他们在内部没有创建很多 ListItem 对象,而只是创建了一个。无论如何,我试图找出一个回发控件是否是我的 CheckBoxList 中的控件之一。我的代码看起来类似于:

if (!(System.Web.UI.ScriptManager.GetCurrent(Page) == null)) {
string postbackControlId =            System.Web.UI.ScriptManager.GetCurrent(Page).AsyncPostBackSourceElementID;
    if (!string.IsNullOrEmpty(postbackControlId))
    {
       Control control = ControlFinder.RecursiveFindChildControl(Controls, postbackControlId);
       if (!(control == null))
        { }
    }
}

无论如何要枚举 CheckBoxList 的子控件或查找我拥有的 ID 是否等于他们的 ID 之一?

谢谢,迈克

4

2 回答 2

0

如果您只是想查明回发是否是由 中的一项引起的CheckBoxList,则无需遍历整个控件层次结构。您甚至不需要深入了解列表。这样的事情应该可以正常工作:

string elementID = ScriptManager.GetCurrent(Page).AsyncPostBackSourceElementID;
if (elementID.Contains(chkList.UniqueID))
{
    //one of the checkboxes caused the postback
}
于 2012-04-05T18:52:38.037 回答
0

UniqueIDa中的CheckBoxaCheckBoxList是加 a 的UniqueID加项的索引,因此您可以检查是否是这样的控件之一:CheckBoxList$postbackControlIdCheckBox

if (postbackControlId.StartsWith(this.checkBoxList.UniqueID + "$"))
{
    int itemIndex = Convert.ToInt32(
        postbackControlId.Substring(this.checkBoxList.UniqueID.Length + 1), 10);
    // ...
}
于 2012-04-05T18:52:52.747 回答