0

我需要在一个 webpart 中显示所有员工。我通过遍历 SharePoint 中的所有用户创建了 gridview 并附加了数据。之后他们要求我添加分页,我在底部添加了我们的正常分页。现在他们希望按字母顺序分页..

单击“A”时,我需要显示从“A”开始的所有用户名等等...我需要添加字母分页和数字分页...

我通过谷歌搜索但无济于事..有人可以帮我吗?是否是 javascript/code 背后...以及如何合并搜索功能....

4

1 回答 1

1
Method 1: Create Pager with Alphabets from A-Z 


**Aspx Page**

Open an aspx page in your Visual Studio, add a DataList and a GridView control into it. The DataList control is the Pager control, used to display the Page Numbers, in our terms Paging Alphabets and the GridView control is used to display the list of customers from the SQL Server database. First, in the Item Template section of the DataList, add a LinkButton and name it as lnkbtnPaging. Bind the Text and CommandArgument property of the LinkButton with the value as PageText and PageIndex respectively. PageText and PageIndex are the two columns from the DataTable, which we are going to create in the code-behind section to bind with this DataList. This DataTable will have values used for paging. Note that both PageText and PageIndex will have the same value. Then design the GridView control to display columns from the Employee table. 

 <asp:DataList ID="DataList1" OnItemCommand="DataList1_ItemCommand"
            OnItemDataBound="DataList1_ItemDataBound" RepeatDirection="Horizontal" runat="server">

        <SeparatorTemplate>

            </SeparatorTemplate>
            <ItemTemplate>
                <asp:LinkButton ID="lnkbtnPaging" runat="server" CommandArgument='<%# Bind("PageIndex") %>'
                    Text='<%# Bind("PageText") %>'></asp:LinkButton>
            </ItemTemplate>
        </asp:DataList>

        <br />

        <asp:GridView ID="GridView1" runat="server" EmptyDataText="No Records Found">
        </asp:GridView>



**Aspx.cs file**

The first method is to create an alphabetical paging control with alphabets from A to Z. For this we have to loop through 65 to 90, and convert the value to its equivalent character, which is from A to Z. Then store each value into a DataTable row and bind it with the DataList control. The code for this method is given below

 private void CreateAlphaPagings()
    {
        DataTable dt = new DataTable();
        dt.Columns.Add("PageIndex");
        dt.Columns.Add("PageText");
        if (this.ViewState["Paging"] == null)
        {
            for (int i = 65; i <= 90; i++)
            {
                DataRow dr = dt.NewRow();
                dr[0] = Char.ConvertFromUtf32(i);
                dr[1] = Char.ConvertFromUtf32(i);
                dt.Rows.Add(dr);
            }
            DataRow drNew = dt.NewRow();
            drNew["PageIndex"] = "All";
            drNew["PageText"] = "All";
            dt.Rows.Add(drNew);
            this.ViewState["Paging"] = dt;
        }
        else
            dt = (DataTable)this.ViewState["Paging"];
        DataList1.DataSource = dt;
        DataList1.DataBind();
    }

The above method creates a DataTable with two columns PageIndex and PageText. We loop through 65 to 90, whose ASCII character equivalent is from A to Z. We are using Char.ConvertFromUtf32 method to convert the number to alphabets. After conversion we assign the value to the PageIndex and PageText columns of the DataTable. Sometimes, the user needs to view all the data in a single page. To provide this option we have added another DataRow with value “All”. We have also used a ViewState variable in this method, in order to avoid the for-loop being executed every time this method is called. So for the first time, when the page loads, the ViewState is empty or null, thus execute the for-loop to create the rows for the DataTable, then the DataTable created will be stored in the ViewState called “Paging”. When this method is called subsequently, the ViewState “Paging” it will supply the alphabetical paging DataTable rows. Finally we bind the DataList is bind with the paging DataTable

**Bind the GridView control** 

To display the Customer information in a GridView control, we create a method called BindGrid, which takes a parameter called StartAlpha. This parameter is responsible to filter the customer records before binding it with the GridView control. If the parameter value is “All”, then all records will be displayed in the GridView control. The BindGrid method is given below.

  private void BindGrid(string StartAlpha)
    {
        string sql = "";
        if (StartAlpha == "All")
            sql = "Select ecode,firstName from sales_employee Order By Ecode Desc";
        else
            sql = "Select ecode,firstName from sales_employee Where firstName Like '" + StartAlpha
                + "%' Order By Ecode Desc ";

        string strConnection = "Your Connection String";

        con.ConnectionString = strConnection;

             con.Open();
            SqlDataAdapter adp = new SqlDataAdapter(sql,con);
            DataSet ds = new DataSet();
            adp.Fill(ds);
            GridView1.DataSource = ds;
            GridView1.DataBind();

    }

**Page Load Event** 

  protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            this.ViewState["SelectedText"] = "All";
            CreateAlphaPagings();
            BindGrid(this.ViewState["SelectedText"].ToString());
        } 


    }
**DataList ItemCommand Event** 


    protected void DataList1_ItemCommand(object source, DataListCommandEventArgs e)
    {
        LinkButton lbkbtnPaging = (LinkButton)e.CommandSource;
        BindGrid(e.CommandArgument.ToString());
        this.ViewState["SelectedText"] = e.CommandArgument.ToString();
        CreateAlphaPagings();
    }

**DataList ItemDataBound Event** 


protected void DataList1_ItemDataBound(object sender, DataListItemEventArgs e)
    {
        if (e.Item.ItemType == ListItemType.AlternatingItem
          || e.Item.ItemType == ListItemType.Item)
        {
            if (this.ViewState["SelectedText"] != null)
            {
                LinkButton lbkbtnPaging = (LinkButton)e.Item.FindControl("lnkbtnPaging");
                if (this.ViewState["SelectedText"].ToString() == lbkbtnPaging.Text)
                    lbkbtnPaging.Enabled = false;
            }
        }
    }
于 2012-06-12T13:30:20.277 回答