Basf_TCC11/HJGL/FineUIPro.Web/Email_Send/SelectRoleControl.ascx.cs

148 lines
4.3 KiB
C#
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using BLL;
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Text;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace FineUIPro.Web.Email_Send
{
public partial class SelectRoleControl : System.Web.UI.UserControl
{
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
BindGrid();
}
}
#region BindGrid
private void BindGrid()
{
// 1.设置总项数特别注意数据库分页一定要设置总记录数RecordCount
Grid1.RecordCount = GetTotalCount();
// 2.获取当前分页数据
DataTable table = GetPagedDataTable();
// 3.绑定到Grid
Grid1.DataSource = table;
Grid1.DataBind();
}
/// <summary>
/// 模拟返回总项数
/// </summary>
/// <returns></returns>
private int GetTotalCount()
{
return GetSource().Rows.Count;
}
/// <summary>
/// 模拟数据库分页实际项目中请直接使用SQL语句返回分页数据
/// </summary>
/// <returns></returns>
private DataTable GetPagedDataTable()
{
int pageIndex = Grid1.PageIndex;
int pageSize = Grid1.PageSize;
DataTable table = GetSource();
DataTable paged = table.Clone();
int rowbegin = pageIndex * pageSize;
int rowend = (pageIndex + 1) * pageSize;
if (rowend > table.Rows.Count)
{
rowend = table.Rows.Count;
}
for (int i = rowbegin; i < rowend; i++)
{
paged.ImportRow(table.Rows[i]);
}
return paged;
}
private DataTable GetSource()
{
string sortField = Grid1.SortField;
string sortDirection = Grid1.SortDirection;
string strSql = @"select * from Sys_Role where 1=1";
List<SqlParameter> listStr = new List<SqlParameter>();
SqlParameter[] parameter = listStr.ToArray();
DataTable table2 = SQLHelper.GetDataTableRunText(strSql, parameter);
DataView view2 = table2.DefaultView;
view2.Sort = String.Format("{0} {1}", sortField, sortDirection);
List<string> filters = new List<string>();
string searchKeyword = ttbSearch.Text.Trim();
if (!String.IsNullOrEmpty(searchKeyword) && ttbSearch.ShowTrigger1)
{
// RowFilter的用法http://www.csharp-examples.net/dataview-rowfilter/
filters.Add(String.Format("RoleName LIKE '*{0}*'", EscapeLikeValue(searchKeyword)));
}
if (filters.Count > 0)
{
view2.RowFilter = String.Join(" AND ", filters.ToArray());
}
return view2.ToTable();
}
// From: http://www.csharp-examples.net/dataview-rowfilter/
public static string EscapeLikeValue(string valueWithoutWildcards)
{
StringBuilder sb = new StringBuilder();
for (int i = 0; i < valueWithoutWildcards.Length; i++)
{
char c = valueWithoutWildcards[i];
if (c == '*' || c == '%' || c == '[' || c == ']')
sb.Append("[").Append(c).Append("]");
else if (c == '\'')
sb.Append("''");
else
sb.Append(c);
}
return sb.ToString();
}
#endregion
#region Events
protected void Grid1_PageIndexChange(object sender, GridPageEventArgs e)
{
BindGrid();
}
protected void Grid1_Sort(object sender, GridSortEventArgs e)
{
BindGrid();
}
protected void ttbSearch_Trigger1Click(object sender, EventArgs e)
{
ttbSearch.Text = String.Empty;
ttbSearch.ShowTrigger1 = false;
BindGrid();
}
protected void ttbSearch_Trigger2Click(object sender, EventArgs e)
{
ttbSearch.ShowTrigger1 = true;
BindGrid();
}
#endregion
}
}