C# 在父页数据控件绑定之后,用户控件中的下一个事件是什么?
我创建了一个用户控件,其中包含一个下拉列表和一些其他控件。我的用户控件有一个名为“用户名”的公共属性,它将帮助检索数据以填充dropdownlistC# 在父页数据控件绑定之后,用户控件中的下一个事件是什么?,c#,asp.net,C#,Asp.net,我创建了一个用户控件,其中包含一个下拉列表和一些其他控件。我的用户控件有一个名为“用户名”的公共属性,它将帮助检索数据以填充dropdownlist <uc1:MyUserControl runat="server" ID="ucDetails" UserName = '<%# Eval("UserName")%>' /> 我是在设置用户控件属性时发现的。对于用户名(参见上面的示例),在usercontrol的page_加载期间不会设置该值。它是在父页面的DataB
<uc1:MyUserControl runat="server" ID="ucDetails" UserName = '<%# Eval("UserName")%>' />
我是在设置用户控件属性时发现的。对于用户名(参见上面的示例),在usercontrol的page_加载期间不会设置该值。它是在父页面的DataBind事件期间设置的,该事件发生在用户控件的page_load事件之后
从用户控制的角度来看,下一个最接近的事件是什么,我仍然可以调用检索数据,然后将其绑定到我的DropDownList
感谢您的帮助。如果要在ListView中的每个项目的数据绑定事件期间设置下拉列表,请在ListView控件上为ItemDataBound事件添加处理程序:
<asp:ListView ID="listView1" runat="server" OnItemDataBound="listView1_ItemDataBound">
然后,您可以在用户控件上执行任何需要的操作,例如在其上设置UserName属性和/或设置下拉列表的项目
注意:如果需要为每个项设置不同的属性,可以从ListViewItemEventArgs
对象中获取当前项的数据对象:e.item.DataItem为[数据项应为何种类型]
或者,如果要确保在设置用户名后始终填充下拉列表,可以更新UserName属性的setter,以便在设置为有效用户名(非null或空等)时,它(setter)调用方法填充下拉列表。这样,在页面生命周期中,数据绑定到ListView的位置并不重要。可能看起来像这样:
public string UserName
{
get { return _username; }
set
{
// Make sure new value is valid (not null/empty, exists, etc.)
if (string.IsNullOrEmpty(value))
// Do something (throw exception, show error, etc.)
else
{
_userName = value;
SetupDropDownList();
}
}
}
private string _userName;
看起来这是一个包含在另一个数据绑定控件中的用户控件?在这种情况下,它在父控件的数据绑定之前不存在。我猜你的下拉列表取决于用户名,或者被用户名过滤了?在这种情况下,您可以在rowdatabound期间将数据源设置为适当的列表。对不起,我忘了提到用户控件本身是数据绑定控件的一部分。但是,关于RowDataBound,您的建议是否可以明确一点?您的用户控件属于哪种数据绑定控件?根据数据绑定控件的类型,可以对父控件中的每一行/项使用父控件数据绑定事件,也可以使用数据绑定事件。有了更多的信息,我可以提供一个例子。我使用了一个Listview和一个objectDatasource。@Richard77被删除了;从本质上讲,TheRotag在他的回答中所展示的就是我所想的。
public string UserName
{
get { return _username; }
set
{
// Make sure new value is valid (not null/empty, exists, etc.)
if (string.IsNullOrEmpty(value))
// Do something (throw exception, show error, etc.)
else
{
_userName = value;
SetupDropDownList();
}
}
}
private string _userName;