【问题标题】:fill controls of web user control from parent page从父页面填充 Web 用户控件的控件
【发布时间】:2011-12-06 12:08:40
【问题描述】:

我有两个 web 用户控件,一个网格视图显示结果,另一个包含简单的文本框和下拉菜单,它们基本上是为编辑网格视图项目而创建的

aspx.cs页面代码是

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

在 rowid i 中包含被选中的项目的 id

现在我想在 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 ">
        &nbsp;
    </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>

我在 webusercontrol 上有一个属性

public string ABC_DEF
{
   set  {   txtABC.Text = value;       }
   get  {   return txtABC.Text;       }
}

在父页面上,即在 aspx 页面上,我称之为

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
}

谢谢 古尔巴克斯

【问题讨论】:

  • 您创建用户控件来更新项目有什么特殊原因吗?您可以使用详细信息视图控件轻松实现此目的
  • @Denys Wessels 是的,我必须通过用户控制来做到这一点
  • 嗨,Gurbax,我想为您提供帮助。您能具体说明您遇到问题的部分吗?我知道您可以从 gridview 中获取所选行的 ID。您需要帮助从数据库中检索所选 id 的数据,还是需要帮助使用检索到的数据填充用户控件?
  • @DenysWessels 我的问题是我从数据库中获得了该选定行的所有数据,但我知道问题是如何将这些数据添加到不同的用户控件的字段中,即如何访问父 aspx 页面上的 web 用户控件,以便我可以为它们分配值..

标签: c# asp.net


【解决方案1】:

在您的用户控件 .ascx 文件中,为您需要拉入用户控件的每个字段创建属性,

然后您可以通过指定 UserControlId.Property 语法从 .aspx 页面简单地访问它们,如下所示:

public string Name
{
    get { return txtName.Text; }
    set { txtName.Text = value; }
}

public string Surname
{
    get { return txtSurname.Text; }
    set { txtSurname.Text = value; }
}

在 .aspx 页面上,可以这样访问属性:

protected void PopulateUserControl_Click(object sender, EventArgs e)
{
    userControlName.Name = "Bob";
    userControlName.Surname = "The Builder";
}

【讨论】:

  • 当我应用此代码时,当我设置属性集 { txtName.Text = value; 的值时发生空引用异常} } 从我使用这个属性的地方,我传递的值是正确的,即不是 null
  • 嗨 Gurbax,您能否修改您的问题并提供一些代码。在不确切知道您如何在代码中实现建议的解决方案的情况下分析这样的问题非常困难。或者,您可以创建一个新的关于空引用异常的问题
  • @ Denys Wessels 请阅读我编辑问题的最后几行问题
猜你喜欢
  • 2011-06-29
  • 1970-01-01
  • 2015-04-30
  • 2010-09-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-09
  • 1970-01-01
相关资源
最近更新 更多