Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/29.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在父页数据控件绑定之后,用户控件中的下一个事件是什么?_C#_Asp.net - Fatal编程技术网

C# 在父页数据控件绑定之后,用户控件中的下一个事件是什么?

C# 在父页数据控件绑定之后,用户控件中的下一个事件是什么?,c#,asp.net,C#,Asp.net,我创建了一个用户控件,其中包含一个下拉列表和一些其他控件。我的用户控件有一个名为“用户名”的公共属性,它将帮助检索数据以填充dropdownlist <uc1:MyUserControl runat="server" ID="ucDetails" UserName = '<%# Eval("UserName")%>' /> 我是在设置用户控件属性时发现的。对于用户名(参见上面的示例),在usercontrol的page_加载期间不会设置该值。它是在父页面的DataB

我创建了一个用户控件,其中包含一个下拉列表和一些其他控件。我的用户控件有一个名为“用户名”的公共属性,它将帮助检索数据以填充dropdownlist

<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;