900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > -7-21/22+ DataGrid知识整理

-7-21/22+ DataGrid知识整理

时间:2022-05-29 13:41:35

相关推荐

-7-21/22+  DataGrid知识整理

文件是mssql解决方案里的datagrid程序。

DataGrid的基本结构整理:

<asp:datagrid id="dgsy" runat="server" ForeColor="Black" BackColor="White" BorderWidth="1px" BorderStyle="Solid"

GridLines="Vertical" CssClass="dg1" CellPadding="3" BorderColor="#999999" AllowSorting="True"

AutoGenerateColumns="False" PageSize="7" AllowPaging="True">

<SelectedItemStyle Font-Bold="True" ForeColor="White" BackColor="#000099"></SelectedItemStyle>

<AlternatingItemStyle BackColor="#CCCCCC"></AlternatingItemStyle>

<HeaderStyle Font-Bold="True" ForeColor="White" BackColor="Black"></HeaderStyle>

<FooterStyle BackColor="#CCCCCC"></FooterStyle>

<Columns>

<asp:BoundColumn DataField="named" HeaderText="机体名称" SortExpression="named"></asp:BoundColumn>

<asp:BoundColumn DataField="act" HeaderText="所属作品" SortExpression="act"></asp:BoundColumn>

<asp:BoundColumn DataField="id" HeaderText="编号"></asp:BoundColumn>

<asp:HyperLinkColumn DataNavigateUrlField="id" DataNavigateUrlFormatString="cc.aspx?id={0}" DataTextField="id"

HeaderText="连接"></asp:HyperLinkColumn>

<asp:ButtonColumn Text="详细" HeaderText="操作" CommandName="more"></asp:ButtonColumn>

<asp:EditCommandColumn ButtonType="LinkButton" UpdateText="更新" CancelText="取消" EditText="编辑"></asp:EditCommandColumn>

<asp:ButtonColumn Text="删除" CommandName="Delete"></asp:ButtonColumn>

</Columns>

<PagerStyle HorizontalAlign="Center" ForeColor="Black" BackColor="#999999" Mode="NumericPages"></PagerStyle>

</asp:datagrid>

其中分页和删除、编辑列都是通过属性生成器完成的,BoundColumn为自定义列时需要使用的,在这里可以自己定义headertext,但必须要把AutoGenerateColumns的值设为flase。如果要进行排序的话,就必须要指定SortExpression,这是用来排序的数据表的列名。

相对应的事件处理方法都是在属性面板的事件栏里进行操作。

<asp:HyperLinkColumn DataNavigateUrlField="id" DataNavigateUrlFormatString="cc.aspx?id={0}" DataTextField="id"

HeaderText="连接"></asp:HyperLinkColumn>这是超级连接的列的设置办法。DataNavigateUrlField是连接里变量参数的值,指的是数据库里的相应的列。DataNavigateUrlFormatString是连接字符串,其中有一个参数,这个位置的值就是DataNavigateUrlField,DataTextField是用来在页面上显示的字符,也是相对应的数据库里的相应的列。

数据绑定到datagrid

DataSet ds=new DataSet();

ada.Fill(ds,"mss");

DataView dv=ds.Tables["mss"].DefaultView;

dv.Sort=(string)ViewState["SortField"];

dgsy.DataSource=dv;

dgsy.DataBind();

这是绑定时的部分代码,注意这里用了DataView,这个还没有研究,另外加了一个排序时需要的功能dv.Sort,后面接收的值在排序事件处理时给予。

dgsy.EditItemIndex=e.Item.ItemIndex;

setup();

这是处理编辑事件时的代码,可以看到,和datalist差不多

删除事件

int ids=Int32.Parse(e.Item.Cells[2].Text);

string sqldel="delete from ms where id="+ids;

处理删除时用的,和datalist真的差不多,e.Item.Cells[2]是指触发事件的datagrid的那一行的第二列的值,这里就是一个id,然后再根据id把记录删了

int ids=Int32.Parse(((TextBox)(e.Item.Cells[2].Controls[0])).Text);

这个id的获取就不一样了,因为这是在处理update时,datagrid那一行都变成textbox了,所以要进行格式的转换,另外e.Item.Cells[2].Controls[0]表示这个行列的第一个控件,自然就是我们需要的textbox

相关值的获取

dr["named"]=((TextBox)(e.Item.Cells[0].Controls[0])).Text;

dr["act"]=((TextBox)(e.Item.Cells[1].Controls[0])).Text;

ada.Update(ds,"mss");

具体的处理过程。

关于分页,这个如果用datareader就麻烦了,需要自己指定,但是dataset就可以作到一个allowpaging就可以搞定。

默认分页

dgsy.CurrentPageIndex=e.NewPageIndex;

setup();

处理页码改变的代码

注意的是,不管你的pagesize是多少,在一开始的时候都是把所有的记录都调出来,然后再进行下一步操作,所以对资源的浪费是肯定的,在这里有一个好的办法就是用自定义分页,就是AllowCustomPaging="True",关于这个我学会了一点,呆会就写个东西上来。

处理事件冲突的办法

还有,如果ButtonColumn和EditCommandColumn同时使用,单击EditCommandColumn中的按钮时,除激发响应的编辑、取消、更新等事件外,还会激发ItemCommand事件,这意味着有两个事件处理程序被执行。(注意,在datalist里也存在这样的情况。)

解决的办法是定义ButtonColumn的commandname或commandargument属性,在ItemCommand事件中先判断命令源的commandname或commandargument,再执行响应的操作。下面是相应的代码

//点击事件发生时的事件

private void dgsy_ItemCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)

{

if(mandName=="more")

{

//获得返回的tablerow对象

TableRow tr=e.Item;

//获得tablecell的数据

string s=tr.Cells[2].Text;

Response.Write(s);

setup();

}

}

基本就这些了。或许应该把图书馆里的那本书拿过来好好研究研究。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。