Reputation: 3280
i have two web user control in one the grid view is showing the result and the other contains the simply textboxes and the dropdowns that are basically created to edit that gridview items
the aspx.cs page code is
GridView gView = PlaceHolder2.Controls[0].FindControl("grvBranches") as GridView;
int index = gView.SelectedIndex;
GridViewRow grd = gView.Rows[index];
Label lbl = (Label)grd.FindControl("lblID");
int rowid = 0;
int.TryParse(lbl.ToString(), out rowid);
In rowid i contains the id of that item which is selected
now i want to fill all the following items in webusercontrol
<div class="col2_form1">
<div class="form1_bar1">
<div class="form1_txt1_div">
<asp:Label ID="lblBranchName" runat="server" Text="Branch Name">
</asp:Label>
</div>
<div class="form1_txtfield_div">
<asp:TextBox runat="server" ID="txtBranchName" class="form1_TxtField" />
</div>
<div class="form1_txt2_div">
<asp:RequiredFieldValidator ID="RFVBranchName" ErrorMessage="*" Display="Dynamic"
ValidationGroup="Save" ControlToValidate="txtBranchName" runat="server" />
<%-- <asp:Label Text="Error" ID="lblBranchNameError" runat="server" />--%>
</div>
</div>
<div class="form1_bar2">
<div class="form1_txt1_div">
<asp:Label Text=" Organization Name" ID="lblOrganizationName" runat="server" />
</div>
<div class="form1_txtfield_div">
<asp:DropDownList ID="ddlOrganization" CssClass="form1_TxtField" runat="server">
</asp:DropDownList>
</div>
<div class="form1_txt2_div">
<%--<asp:Label Text="Error" ID="lblOrganizationNameError" runat="server" />--%>
</div>
</div>
<div class=" form1_bar1">
<div class="form1_txt1_div ">
<asp:Label Text="Address Line1" ID="lblAddresLine1" runat="server" />
</div>
<div class=" form1_txtfield_div">
<asp:TextBox runat="server" ID="txtAddresLine1" CssClass="form1_TxtField" />
</div>
<div class="form1_txt2_div ">
<asp:RequiredFieldValidator ErrorMessage="*" Display="Dynamic" ValidationGroup="Save"
ControlToValidate="txtAddresLine1" runat="server" />
</div>
</div>
<div class=" form1_bar2">
<div class="form1_txt1_div ">
<asp:Label Text="Address Line2" ID="lblAddresLine2" runat="server" />
</div>
<div class="form1_txtfield_div ">
<asp:TextBox runat="server" ID="txtAddresLine2" CssClass="form1_TxtField" />
</div>
<div class="form1_txt2_div ">
</div>
</div>
<div class="form1_bar1 ">
<div class="form1_txt1_div">
<asp:Label Text="Country" ID="lblCountry" runat="server" />
</div>
<div class="form1_txtfield_div " style="float: left;">
<asp:DropDownList ID="ddlCountry" AutoPostBack="true" CssClass="form1_TxtField" runat="server"
OnSelectedIndexChanged="ddlCountry_SelectedIndexChanged">
</asp:DropDownList>
</div>
<div class=" form1_txt2_div">
</div>
</div>
<div class=" form1_bar2">
<div class="form1_txt1_div ">
<asp:Label Text="State" ID="lblState" runat="server" />
</div>
<div class="form1_txtfield_div ">
<asp:DropDownList ID="ddlState" AutoPostBack="true" CssClass="form1_TxtField" runat="server"
OnSelectedIndexChanged="ddlState_SelectedIndexChanged">
</asp:DropDownList>
</div>
<div class="form1_txt2_div ">
</div>
</div>
<div class="form1_bar1 ">
<div class="form1_txt1_div ">
<asp:Label Text="City" ID="lblCity" runat="server" />
</div>
<div class="form1_txtfield_div ">
<asp:DropDownList runat="server" CssClass="form1_TxtField" ID="ddlCity">
</asp:DropDownList>
</div>
<div class="form1_txt2_div ">
</div>
</div>
<div class="form1_bar2 ">
<div class="form1_txt1_div ">
</div>
<div class="form1_txtfield_div">
<asp:Button Text="Save" Width="100px" runat="server" ID="btnSave" ValidationGroup="Save"
OnClick="btnSave_Click" />
</div>
<div class="form1_txt2_div">
<asp:Label Text="" ID="lblMsg" Visible="false" runat="server" />
</div>
</div>
i have a property on the webusercontrol as
public string ABC_DEF
{
set { txtABC.Text = value; }
get { return txtABC.Text; }
}
and on the parent page i.e on the aspx page i call it as
if (ViewState["controlname"] != null)
{
PlaceHolder pl = MainPanel.FindControl(ViewState["controlname"].ToString()) as PlaceHolder;
pl.Controls.RemoveAt(0);
}
Control uc = (Control) Page.LoadControl("~/usercontrols/control_forms/branch_aspx_form.ascx");
ViewState["path"] = "~/usercontrols/control_forms/branch_aspx_form.ascx";
ViewState["controlname"] = "PlaceHolder1";
PlaceHolder1.Controls.Add(uc);
branch_view[] branch_to_edit = EntityService.ServiceInstance.GetBranchByBranchID(row_id);
foreach (branch_view item in branch_to_edit)
{
usercontrols.control_forms.branch_aspx_form branch_control =
new usercontrols.control_forms.branch_aspx_form();
branch_control.ABC_DEF = " hello"; // Call property here
}
thanks Gurbax
Upvotes: 1
Views: 1713
Reputation: 17049
In your user control .ascx file create properties for each of the fields you need to be pulled onto the user control,
Then you can simply access them from the .aspx page by specifying the UserControlId.Property syntax like so:
public string Name
{
get { return txtName.Text; }
set { txtName.Text = value; }
}
public string Surname
{
get { return txtSurname.Text; }
set { txtSurname.Text = value; }
}
On the .aspx page the properties can be accessed like this:
protected void PopulateUserControl_Click(object sender, EventArgs e)
{
userControlName.Name = "Bob";
userControlName.Surname = "The Builder";
}
Upvotes: 1