如何从单独的C#类库更新WebControl
需要从单独的c#类库更新Web控件。例如,必须从类库更新网格数据源 在WebForm1.aspx中,我有以下代码如何从单独的C#类库更新WebControl,c#,C#,需要从单独的c#类库更新Web控件。例如,必须从类库更新网格数据源 在WebForm1.aspx中,我有以下代码 <body> <form id="form1" runat="server"> <div> <table> <tr> <td> <div> <table width="100%" cellpadding="0"
<body>
<form id="form1" runat="server">
<div>
<table>
<tr>
<td>
<div>
<table width="100%" cellpadding="0" cellspacing="0">
<tr>
<td>
<table>
<tr>
<td>Search</td>
<td>
<span>
<asp:TextBox ID="txtSearchBox" EnableTheming="false" AutoPostBack="True"
runat="server" ontextchanged="txtSearchBox_TextChanged" ></asp:TextBox>
</span>
<span>
<asp:Button ID="btnPre" runat="server" Text="<" CssClass="btnPrevious"
EnableTheming="false" onclick="btnPre_Click" />
</span>
<span>
<asp:TextBox ID="txtPage_Index" EnableTheming="false" CssClass="textboxTiny" AutoPostBack="True"
runat="server" ontextchanged="txtPage_Index_TextChanged" ></asp:TextBox></span>
<span>
<asp:Button ID="btnNext" runat="server" Text=">" CssClass="btnNext"
EnableTheming="false" onclick="btnNext_Click" />
</span>
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td colspan="3" style="margin-left: 40px">
<asp:GridView ID="grdSource" runat="server" class="grid" Width="100%"
AutoGenerateColumns="False" AllowPaging="true">
<Columns>
<asp:TemplateField>
<ItemStyle Width="20px" />
<ItemStyle />
<ItemTemplate>
<asp:CheckBox ID="chkSelectFeesType" runat="server" />
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField DataField="name" HeaderText="Name"/>
</Columns>
<HeaderStyle CssClass="gridheader" />
<RowStyle CssClass="gridrow" />
</asp:GridView>
</td>
</tr>
</table>
</div>
</td>
</tr>
</table>
</div>
</form>
搜寻
在代码背后
public partial class WebForm1 : System.Web.UI.Page
{
BO.Search search = new Search();
List<Employee> employees = new List<Employee>();
System.Web.UI.Page page = System.Web.HttpContext.Current.Handler as
System.Web.UI.Page;
protected void Page_Load(object sender, EventArgs e)
{
System.Web.UI.Page page = System.Web.HttpContext.Current.Handler as System.Web.UI.Page;
employees.Add(new BO.Employee("AAA", 01));
employees.Add(new BO.Employee("BBB", 02));
employees.Add(new BO.Employee("CCC", 03));
employees.Add(new BO.Employee("DDD", 04));
employees.Add(new BO.Employee("EEE", 05));
}
protected void btnPre_Click(object sender, EventArgs e)
{
search.PageSearch(ref grdSource, employees, ref page);
}
protected void txtPageIndex_TextChanged(object sender, EventArgs e)
{
search.PageSearch(ref grdSource, employees, ref page);
}
protected void btnNext_Click(object sender, EventArgs e)
{
search.PageSearch(ref grdSource, employees, ref page);
}
}
public分部类WebForm1:System.Web.UI.Page
{
BO.Search Search=新搜索();
列出员工=新列表();
System.Web.UI.Page=System.Web.HttpContext.Current.Handler as
System.Web.UI.Page;
受保护的无效页面加载(对象发送方、事件参数e)
{
System.Web.UI.Page=System.Web.HttpContext.Current.Handler作为System.Web.UI.Page;
新增(新员工(“AAA”,01));
添加(新的BO.雇员(“BBB”,02));
新增(新员工(“CCC”,03));
添加(新的BO.雇员(“DDD”,04));
添加(新的BO.雇员(“EEE”,05));
}
受保护的无效btnPre\u单击(对象发送者,事件参数)
{
search.PageSearch(参考grdSource、员工、参考页面);
}
受保护的void txtPageIndex_TextChanged(对象发送方,事件参数e)
{
search.PageSearch(参考grdSource、员工、参考页面);
}
受保护的void btnNext_单击(对象发送方,事件参数e)
{
search.PageSearch(参考grdSource、员工、参考页面);
}
}
在类库class Search.cs中
public class Search
{
public void PageSearch<T>(ref GridView grdSource, List<T> list, ref Page page)
{
TextBox txtSearchBox = (TextBox)page.FindControl("txtSearchBox");
TextBox txtPage_Index = (TextBox)page.FindControl("txtPage_Index");
if (grdSource.PageIndex > 0)
{
if (txtSearchBox.Text.Length > 0)
{
grdSource.DataSource = list.FindAll(i => i.Equals(txtSearchBox.Text.ToUpper()));
}
else
{
grdSource.DataSource = list;
}
grdSource.PageIndex = grdSource.PageIndex - 1;
}
grdSource.DataSource = list;
grdSource.DataBind();
txtPage_Index.Text = grdSource.PageIndex.ToString();
}
}
公共类搜索
{
公共无效页面搜索(参考GridView grdSource、列表列表、参考页面)
{
TextBox txtSearchBox=(TextBox)page.FindControl(“txtSearchBox”);
TextBox txtPage_Index=(TextBox)page.FindControl(“txtPage_Index”);
如果(grdSource.PageIndex>0)
{
如果(txtSearchBox.Text.Length>0)
{
grdSource.DataSource=list.FindAll(i=>i.Equals(txtSearchBox.Text.ToUpper());
}
其他的
{
grdSource.DataSource=列表;
}
grdSource.PageIndex=grdSource.PageIndex-1;
}
grdSource.DataSource=列表;
grdSource.DataBind();
txtPage_Index.Text=grdSource.PageIndex.ToString();
}
}
我在多个表单中具有相同的搜索和分页功能。因此,我创建了PageSearch()函数来处理所有页面。但问题是我无法绑定search.cs类中的网格视图或文本框值。通过以下链接了解如何将控件公开给其他类,这可能是您想要的:
包装web控件,使包装器实现您的接口。使用C#library提供的接口。@Arturudo感谢您的回复。但如果你能解释一下,这将非常有帮助。我对.net概念演示非常陌生。