Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从单独的C#类库更新WebControl_C# - Fatal编程技术网

如何从单独的C#类库更新WebControl

如何从单独的C#类库更新WebControl,c#,C#,需要从单独的c#类库更新Web控件。例如,必须从类库更新网格数据源 在WebForm1.aspx中,我有以下代码 <body> <form id="form1" runat="server"> <div> <table> <tr> <td> <div> <table width="100%" cellpadding="0"

需要从单独的c#类库更新Web控件。例如,必须从类库更新网格数据源

在WebForm1.aspx中,我有以下代码

<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概念演示非常陌生。