Я хочу выполнить задачу, в которой я хочу, чтобы с помощью findControl во время использования webusercontrol в веб-форме было получено значение webusercontrol на главной странице. Я имею в виду, что я создал webusercontrol и использовал его в веб-форме. На странице webusercontrol.ascx я использую текстовое поле, календарь и раскрывающийся список. Теперь я хочу, чтобы значение (которое я выбираю из txtbox, ddl и т. д.) должно отображаться на главной странице. Я имею в виду, что я хочу использовать кнопку на странице default.aspx и в переменной хочу сохранить значение txtbox, календаря и т. д. и с помощью FindControl хочу получить эти значения на главной странице. Как я могу это сделать, пожалуйста, помогите мне с кодом, пожалуйста, я новичок в программировании.

This is the code of ascx page

 <%@ Control Language="C#" ClassName="CalendarUserControl" %>
    <asp:TextBox ID="txtData" runat="server"></asp:TextBox> <br />
    <asp:Calendar ID="Calendar1" runat="server" BackColor="Beige" >
    </asp:Calendar> 
    <br/>
    <asp:DropDownList ID="ddlthings" runat="server"> 
    <asp:ListItem> Apple</asp:ListItem>
    <asp:ListItem> Banana</asp:ListItem>
    <asp:ListItem> Mango</asp:ListItem>
    <asp:ListItem> Grapes</asp:ListItem> 
    </asp:DropDownList>
default.aspx page

<div>
    <uc1:CalendarUserControl ID="CalendarUserControl1" runat="server" />
    <br />
    <asp:Button ID="Button1" runat="server" OnClick="btn_Click" Text="Button" />
    <br />
    <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
</div> 
0
Shakeel Ameer 19 Ноя 2014 в 15:41

2 ответа

Определите свойства в пользовательском элементе управления, которые будут возвращать значения нужных вам элементов управления. Например

public partial class CalendarUserControl: UserControl
{
   // this is code-behind of your user control
   public string Data
   {
      get {return txtData.Text;}
   }

   public DateTime CalendarDate
   {
      get {return Calendar1.SelectedDate;}
   }

   // same approach for drop down list ddlthings
}

Затем на странице aspx просто прочитайте эти значения, например, в обработчике событий btn_Click

protected void btn_Click(object sender, EventArgs e)
{
   var textBoxValue = CalendarUserControl1.Data;
   var calendarValue = CalendarUserControl1.CalendarDate;
   //....
}
0
Michael 19 Ноя 2014 в 16:11
i did it, just write these lines in default.cs

protected void btn_Click(object sender, EventArgs e)
    {
        TextBox myLabel = (TextBox)CalendarUserControl1.FindControl("txtData");
        string x = myLabel.Text.ToString();
        Calendar c = (Calendar)CalendarUserControl1.FindControl("Calendar1");
        string date = c.SelectedDate.ToString();
        DropDownList b = (DropDownList)CalendarUserControl1.FindControl("ddlthings");
        string ddl = b.SelectedValue;
        Label1.Text = "Your text is: " + x + "<br />"+ " Your Selected Date is: " + date + "<br />"+ " Your Selected Item is: " + ddl;
    }
0
Shakeel Ameer 19 Ноя 2014 в 16:54