1 排序
前台:
<asp:DataGrid ID="dgHTMX" runat="server" Width="100%" AutoGenerateColumns="False" OnSortCommand="dgHTMX_SortCommand" > <asp:BoundColumn DataField="GG" HeaderText="规格" SortExpression="GG"></asp:BoundColumn>
</asp:DataGrid>
后台:
protected void dgHTMX_SortCommand(object source, DataGridSortCommandEventArgs e)
{
if (dgHTMX.Items.Count > 1)
{
if (ViewState["sortdirection"] == null)
{
ViewState["sortdirection"] = "DESC";
}
else
{
if (ViewState["sortdirection"].ToString() == "DESC")
{
ViewState["sortdirection"] = "ASC";
}
else
{
ViewState["sortdirection"] = "DESC";
}
}
string s = ViewState["sortdirection"].ToString();
DataTable dt = BllBookManageView.GetCGXMMX(ddlGHCS.SelectedItem.Value, ddlXMMC.SelectedItem.Value);
DataView dv = new DataView(dt);
dv.Sort = e.SortExpression + " " + s;
dgHTMX.DataSource = dv;
dgHTMX.DataBind();
}
}
2 全选
<asp:DataGrid ID="dgHTMX" runat="server" Width="100%" AutoGenerateColumns="False" >
<Columns>
<asp:TemplateColumn HeaderText="选择">
<ItemTemplate>
<asp:CheckBox ID="chkHTMX" runat="server" AutoPostBack="true" Text="选择" onclick="check(this)" OnCheckedChanged="Mycheck_CheckedChanged"/>
</ItemTemplate>
<HeaderTemplate>
<asp:CheckBox ID="chkAll1" runat="server" AutoPostBack="false" onclick="SelectAll(this)" Text="全选" Width="52px" />
</HeaderTemplate>
</asp:TemplateColumn>
</Columns>
</asp:DataGrid>
javascript方法:
function SelectAll(tempControl)
{
//将除头模板中的其它所有的CheckBox取反
var theBox=tempControl;
xState=theBox.checked;
elem=theBox.form.elements;
for(i=0;i<elem.length;i++)
if(elem[i].type=="checkbox" && elem[i].id!=theBox.id)
{
if(elem[i].checked!=xState)
elem[i].click();
}
}
3 后台响应Grid中CheckBox的OnCheckedChanged事件:
前台:
<asp:DataGrid ID="dgHTMX" runat="server" Width="100%" AutoGenerateColumns="False" >
<Columns>
<asp:TemplateColumn HeaderText="选择">
<ItemTemplate>
<asp:CheckBox ID="chkHTMX" runat="server" AutoPostBack="true" Text="选择" OnCheckedChanged="Mycheck_CheckedChanged"/>
</ItemTemplate>
<HeaderTemplate>
<asp:CheckBox ID="chkAll1" runat="server" AutoPostBack="false" Text="全选" Width="52px" />
</HeaderTemplate>
</asp:TemplateColumn>
</Columns>
</asp:DataGrid>
后台:
protected void Mycheck_CheckedChanged(object sender, System.EventArgs e)
{
。。。
}
4 固定表头和滚动
前台:
javascript方法:
function s()
{
var t = document.getElementById("<%=dgHTMX.ClientID%>");
var t2 = t.cloneNode(true)
for(i = t2.rows.length -1;i > 0;i--)
t2.deleteRow(i)
t.deleteRow(0)
a.appendChild(t2)
}
window.onload = s
<div id="a">
</div>
<div style=" overflow:auto; overflow-x:hidden; overflow-y:scroll; width:100%; height:320px;">
<asp:DataGrid ID="dgHTMX" runat="server" Width="100%" AutoGenerateColumns="False" OnSortCommand="dgHTMX_SortCommand" >
</asp:DataGrid>
</div>
(只出现垂直方向的滚动条,要想两个方向都有滚动条: overflow-x: scroll; overflow-y:scroll;)
在后台的绑定Grid方法里的
dgHTMX.DataSource = dt;
dgHTMX.DataBind();
代码前面加上: dgHTMX.Attributes.Add("style", "table-layout:fixed");
即:
dgHTMX.Attributes.Add("style", "table-layout:fixed");
dgHTMX.DataSource = dt;
dgHTMX.DataBind();
还可以根据实际需要设置每列的宽度 HeaderStyle-Width=10% ItemStyle-Width=10%
这两个属性必须同时设置并且要大小相同
评论