我做个个简单的用户控件,test.ascx,就放一个列表框,和一个public string sName属性,如下:
public partial class UserControl_test : System.Web.UI.UserControl
{
public string sName;
protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
{
sName = DropDownList1.SelectedItem.Value;
}
}然后我在外面的页面a.aspx中放入该控件,点击一个获取控件里的sName值,
<uc1:test ID="test1" runat="server" /> protected void Button1_Click(object sender, EventArgs e)
{
Label1.Text = test1.sName; //值为空,,控件里的 DropDownList1_SelectedIndexChanged也触发了,求救则个。
}
public partial class UserControl_test : System.Web.UI.UserControl
{
public string sName;
protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
{
sName = DropDownList1.SelectedItem.Value;
}
}然后我在外面的页面a.aspx中放入该控件,点击一个获取控件里的sName值,
<uc1:test ID="test1" runat="server" /> protected void Button1_Click(object sender, EventArgs e)
{
Label1.Text = test1.sName; //值为空,,控件里的 DropDownList1_SelectedIndexChanged也触发了,求救则个。
}
方法一:在a.aspx页面中声明一下那个用户控件 <uc1:test ID="test1" runat="server" />protected UserControl_test userControl;
protected void Button1_Click(object sender, EventArgs e)
{
Label1.Text = userControl.sName;
}方法二:为你的用户控件添加一个Setterpublic partial class UserControl_test : System.Web.UI.UserControl
{
public string SName
{
get{ return ViewState["sName"];}
set{ ViewState[ "sName"] = value;}
} protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
{
ViewState["sName"] = DropDownList1.SelectedItem.Value;
}
}<uc1:test ID="test1" runat="server" />protected void Button1_Click(object sender, EventArgs e)
{
Label1.Text = ViewState["sName"].ToString();
}
改成Label1.Text = (test1.FindControl("DropDownList1") as DropDownList)).SelectedValue就能取到。
namespace MyWebTest.Usercontrol
{
public partial class WebUserControl1 : System.Web.UI.UserControl
{
protected void Page_Load(object sender, EventArgs e)
{ }
public string sName;
protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
{ sName = DropDownList1.SelectedItem.Value;
}
}
}
使用:
protected void Button2_Click(object sender, EventArgs e)
{
TextBox2.Text = WebUserControl11.sName;
}
结果很正常啊,取到选中项的值。