日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

.net之 datagrid

發布時間:2025/4/5 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 .net之 datagrid 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

  (自己參加的這個項目中)數據綁定控件除了上節的repeater,另一個常用的就是datagrid了.預實現效果:

?

?一:用到的幾個屬性,概述.

(1)AutoGenerateColumns(是否自動生成列):默認情況下,屬性被設置為 true,為數據源中的每一個字段創建一個列(BoundColumn)對象.列顯示順序與每一字段在數據源中出現的順序一樣。 通常情況下,將其設為false,而只選擇你要顯示的列,將其包含在<columns></columns>標記之間列,顯示順序與添加順序一致。

(2)AlternatingItemStyle(交替項樣式) :指定 控件中交替項的樣式,為了美觀,常把相鄰兩行定義為不同的樣式.

(3)ItemStyle(項樣式):指定控件中項的樣式。

(4)HeaderStyle(頭樣式): 指定控件中頁眉部分的樣式。

(5)PagerStyle:指定控件中頁選擇部分的樣式,可用于對所綁定數據分頁,

(6)Columns:列集合,當自動生成列設為false時,添加自定義列.

(7)BoundColumn:顯示綁定到數據源中的字段的列。它以文本形式顯示字段中的每個項。這是 DataGrid 控件的默認列類型。

(8)TemplateColumn:按照指定的模板顯示列中的各項。這使您可以在列中提供自定義控件。

(9)DataField:指定所綁定數據源對應的列名稱

(10)HeaderText:指定頭部顯示名稱

(11)Wrap:是否換行

(12)HorizontalAlign:水平停靠位置

二:datagrid用到的事件概述:

(1)先調用ItemCreated創建每一項,然后調用ItemDataBound綁定每一項數據,當點擊一行時會調用Itemcommand事件.

所以若要對每一行中的空間添加屬性,則應在ItemCreated中,若與所綁定的數據有關則在ItemDataBound中,為每一行的某些項添加CommandName則可以再ItemCommand中獲取對應事件.

代碼如下:

.aspx中代碼:

代碼????????????????<asp:datagrid?id="DGItem"?runat="server"?Width="100%"?PageSize="40"?AutoGenerateColumns="False"
????????????????????????????CssClass
="DataGrid"?AllowPaging="True">
????????????????????????????
<AlternatingItemStyle?CssClass="DataGridAlter"></AlternatingItemStyle>
????????????????????????????
<ItemStyle?CssClass="DataGridItem"></ItemStyle>
????????????????????????????
<HeaderStyle?Wrap="False"?CssClass="DataGridHeader"></HeaderStyle>
????????????????????????????
<PagerStyle?Visible="False"></PagerStyle>
????????????????????????????
<Columns>
????????????????????????????????
<asp:BoundColumn?Visible="False"?DataField="newsId"?HeaderText="newsId">
????????????????????????????????????
<HeaderStyle?Wrap="False"></HeaderStyle>
????????????????????????????????
</asp:BoundColumn>
????????????????????????????????
<asp:TemplateColumn?HeaderText="選擇">
????????????????????????????????????
<HeaderStyle?Wrap="False"?HorizontalAlign="Center"?Width="50px"?VerticalAlign="Middle"></HeaderStyle>
????????????????????????????????????
<ItemStyle?HorizontalAlign="Center"?VerticalAlign="Middle"></ItemStyle>
????????????????????????????????????
<HeaderTemplate>
????????????????????????????????????????
<asp:checkbox?id="chkAll"?runat="server"?Text="刪除"></asp:checkbox>
????????????????????????????????????
</HeaderTemplate>
????????????????????????????????????
<ItemTemplate>
????????????????????????????????????????
<asp:checkbox?id="chkSingle"?runat="server"></asp:checkbox>
????????????????????????????????????
</ItemTemplate>
????????????????????????????????
</asp:TemplateColumn>
????????????????????????????????
<asp:BoundColumn?DataField="newsTitle"?HeaderText="名稱">
????????????????????????????????????
<HeaderStyle?Wrap="False"></HeaderStyle>
????????????????????????????????
</asp:BoundColumn>
????????????????????????????????
<asp:BoundColumn?DataField="keywords"?HeaderText="關鍵字">
????????????????????????????????????
<HeaderStyle?Wrap="False"></HeaderStyle>
????????????????????????????????
</asp:BoundColumn>
????????????????????????????????
<asp:TemplateColumn?HeaderText="來源">
????????????????????????????????????
<ItemTemplate>
????????????????????????????????????????
<asp:Label?id="Label1"?runat="server"?Text="dd"></asp:Label>
????????????????????????????????????
</ItemTemplate>
????????????????????????????????
</asp:TemplateColumn>
????????????????????????????????
<asp:BoundColumn?DataField="inDate"?HeaderText="添加日期"?DataFormatString="{0:yyyy-MM-dd}">
????????????????????????????????????
<HeaderStyle?Wrap="False"?Width="70px"></HeaderStyle>
????????????????????????????????????
<ItemStyle?HorizontalAlign="Center"></ItemStyle>
????????????????????????????????
</asp:BoundColumn>
????????????????????????????????
<asp:BoundColumn?DataField="editDate"?HeaderText="修改日期"?DataFormatString="{0:yyyy-MM-dd}">
????????????????????????????????????
<HeaderStyle?Wrap="False"?Width="70px"></HeaderStyle>
????????????????????????????????????
<ItemStyle?HorizontalAlign="Center"></ItemStyle>
????????????????????????????????
</asp:BoundColumn>
????????????????????????????????
<asp:BoundColumn?DataField="hits"?HeaderText="點擊率">
????????????????????????????????????
<HeaderStyle?Wrap="False"?Width="40px"></HeaderStyle>
????????????????????????????????????
<ItemStyle?Wrap="False"?HorizontalAlign="Center"></ItemStyle>
????????????????????????????????
</asp:BoundColumn>
????????????????????????????????
<asp:BoundColumn?DataField="orderNo"?HeaderText="序號">
????????????????????????????????????
<HeaderStyle?Wrap="False"?Width="40px"></HeaderStyle>
????????????????????????????????????
<ItemStyle?Wrap="False"?HorizontalAlign="Center"></ItemStyle>
????????????????????????????????
</asp:BoundColumn>
????????????????????????????????
<asp:TemplateColumn?HeaderText="審核">
????????????????????????????????????
<HeaderStyle?Wrap="False"?Width="55px"></HeaderStyle>
????????????????????????????????????
<ItemStyle?HorizontalAlign="Center"></ItemStyle>
????????????????????????????????????
<ItemTemplate>
????????????????????????????????????????
<asp:CheckBox?id=cbIsPass?runat="server"?Text="通過"?OnCheckedChanged="CheckBox_CheckedChanged"?AutoPostBack="True"?Checked='<%#?DataBinder.Eval(Container,?"DataItem.isPass")?%>'?>
????????????????????????????????????????
</asp:CheckBox>
????????????????????????????????????
</ItemTemplate>
????????????????????????????????
</asp:TemplateColumn>
????????????????????????????????
<asp:TemplateColumn?HeaderText="設置">
????????????????????????????????????
<HeaderStyle?Wrap="False"?Width="120px"></HeaderStyle>
????????????????????????????????????
<ItemStyle?HorizontalAlign="Center"></ItemStyle>
????????????????????????????????????
<ItemTemplate>
????????????????????????????????????????
<cc1:userlinkbutton?id="btnCommand"?runat="server"?ToolTip="推薦本新聞"?CommandName="command">[我要推薦]</cc1:userlinkbutton>&nbsp;&nbsp;
????????????????????????????????????????
<cc1:userlinkbutton?id="btnRemark"?runat="server"?ToolTip="管理評論"?CommandName="remark">[評論]</cc1:userlinkbutton>&nbsp;&nbsp;
????????????????????????????????????????
<cc1:userimagebutton?id="imgButtonEdit"?runat="server"?ToolTip="修改"?CommandName="Edit"?ImageAlign="AbsMiddle"
????????????????????????????????????????????ImageUrl
="../Images/edit.gif"></cc1:userimagebutton>
????????????????????????????????????
</ItemTemplate>
????????????????????????????????
</asp:TemplateColumn>
????????????????????????????????
<asp:BoundColumn?Visible="False"?DataField="isPic"?HeaderText="isPic"></asp:BoundColumn>
????????????????????????????????
<asp:BoundColumn?Visible="False"?DataField="picUrl"?HeaderText="picUrl"></asp:BoundColumn>
????????????????????????????????
<asp:BoundColumn?Visible="False"?DataField="isCommand"?HeaderText="isCommand"></asp:BoundColumn>
????????????????????????????
</Columns>
????????????????????????
</asp:datagrid>

aspx.cs中代碼:

在ItemCreated中為每一行的checkbox添加點擊事件(調用js)

代碼????????///?<summary>
????????
///?創建datagrid時,,為checkbox添加js事件
????????
///?</summary>
????????
///?<param?name="sender"></param>
????????
///?<param?name="e"></param>
????????private?void?DGItem_ItemCreated(object?sender,?System.Web.UI.WebControls.DataGridItemEventArgs?e)
????????{
????????????
if(e.Item.ItemType?==?ListItemType.Header)
????????????{
????????????????((CheckBox)e.Item.Cells[
1].FindControl("chkAll")).Attributes.Add("onclick","CheckAll('"?+?this.DGItem.ClientID.ToString()?+?"','chkAll','chkSingle');");
????????????}????
????????????
if(e.Item.ItemType?==?ListItemType.AlternatingItem?||?e.Item.ItemType?==?ListItemType.Item)
????????????{
????????????????((CheckBox)e.Item.Cells[
1].FindControl("chkSingle")).Attributes.Add("onclick","CheckSingle('"?+?this.DGItem.ClientID.ToString()?+?"','chkAll','chkSingle');");
????????????}
????????????
????????}

在ItemDataBound中為需要根據數據源顯示的項進行判斷(如若對應新聞項目已推薦,則顯示取消推薦,否則顯示我要推薦)

代碼????????///?<summary>
????????
///?綁定數據時調用事件,設置是否推薦
????????
///?</summary>
????????
///?<param?name="sender"></param>
????????
///?<param?name="e"></param>
????????private?void?DGItem_ItemDataBound(object?sender,?System.Web.UI.WebControls.DataGridItemEventArgs?e)
????????{
????????????
if(e.Item.ItemType?==?ListItemType.AlternatingItem?||?e.Item.ItemType?==?ListItemType.Item)
????????????{
????????????????
bool?command?=?System.Boolean.Parse(e.Item.Cells[13].Text.ToString());
????????????????
if(command)
????????????????{
????????????????????((LinkButton)?e.Item.FindControl(
"btnCommand")).Text="[取消推薦]";
????????????????}
????????????????
else
????????????????{
????????????????????((LinkButton)?e.Item.FindControl(
"btnCommand")).Text="[我要推薦]"?;
????????????????}
????????????}
????????}

根據aspx中設置的CommanName在ItemCommand事件中判斷下一步的操作(推薦,評論還是修改?)

代碼????????///?<summary>
????????
///?檢測(評論,推薦,編輯事件?)
????????
///?</summary>
????????
///?<param?name="source"></param>
????????
///?<param?name="e"></param>
????????private?void?DGItem_ItemCommand(object?source,?System.Web.UI.WebControls.DataGridCommandEventArgs?e)
????????{
????????????e.Item.Cells[
0].Text.ToString();
????????????
//this.Response.Write(e.CommandArgument+"?name:?"+e.CommandName+?e.Item.Cells[0].Text.ToString());????
????????????string?command?=""+?e.CommandName;
????????????
string?strId?=?""+?e.Item.Cells[0].Text.ToString();
????????????
int?newsId?=System.Int32.Parse(strId);
????????????tNewsFac?
=?new?DevSec.DH.Ums.DH.Fac.DCtNews();
????????????
if(command.Equals("command"))
????????????{
????????????????
string?str?=((LinkButton)?e.Item.FindControl("btnCommand")).Text.ToString()?;
????????????????
if(str.Equals("[我要推薦]"))
????????????????{
????????????????
????????????????????
//如果設為推薦
????????????????????tNewsFac.SetCommand(newsId,1);
????????????????????((LinkButton)?e.Item.FindControl(
"btnCommand")).Text="[取消推薦]"?;
????????????????}
????????????????
else
????????????????{
????????????????????
//取消推薦
????????????????????tNewsFac.SetCommand(newsId,0);
????????????????????((LinkButton)?e.Item.FindControl(
"btnCommand")).Text="[我要推薦]"?;
????????????????}
????????????}
????????????
else?if(command.Equals("remark"))
????????????{
????????????????
this.Response.Redirect("remark.aspx?newsId="+newsId);
????????????}
????????????
else?if(command.Equals("Edit"))
????????????{
????????????????
this.Response.Redirect("schoolAddEdit.aspx?action=edit&newsId="+newsId);
????????????}
????????}

也可以為datagrid上的checkbox綁定后臺事件(如對于通過列)

aspx中為:

代碼????????????????????????????????<asp:TemplateColumn?HeaderText="審核">
????????????????????????????????????
<HeaderStyle?Wrap="False"?Width="55px"></HeaderStyle>
????????????????????????????????????
<ItemStyle?HorizontalAlign="Center"></ItemStyle>
????????????????????????????????????
<ItemTemplate>
????????????????????????????????????????
<asp:CheckBox?id=cbIsPass?runat="server"?Text="通過"?OnCheckedChanged="CheckBox_CheckedChanged"?AutoPostBack="True"?Checked='<%#?DataBinder.Eval(Container,?"DataItem.isPass")?%>'?>
????????????????????????????????????????
</asp:CheckBox>
????????????????????????????????????
</ItemTemplate>
????????????????????????????????
</asp:TemplateColumn>

.aspx.cs

代碼///?<summary>
????????
///?設置是否通過
????????
///?</summary>
????????
///?<param?name="sender"></param>
????????
///?<param?name="e"></param>
????????public?void?CheckBox_CheckedChanged(object?sender,?System.EventArgs?e)
????????{
????????????
for(int?index=0;index<this.DGItem.Items.Count;index++)
????????????{
????????????????CheckBox?MyCheckBox???
=???(CheckBox)DGItem.Items[index].FindControl("cbIsPass");???
????????????????
if(sender.Equals(MyCheckBox))
????????????????{
????????????????????
int????newsId?=?System.Int32.Parse(DGItem.Items[index].Cells[0].Text.ToString());
????????????????????tNewsFac?
=?new?DevSec.DH.Ums.DH.Fac.DCtNews();
????????????????????tNewsFac.SetPass(newsId);
????????????????}
????????????}
????????????
//綁定數據
????????????this.bindData(where);
????????}

當然還需要定義該控件,且在頁面初次調用時綁定數據源(略)

? protected System.Web.UI.WebControls.DataGrid DGItem;?

??? this.DGItem.DataSource = dt;
??? this.DGItem.DataBind();?? ????
?其中js代碼(實現全選以及單選):

代碼/*?分頁
????參數說明:
????prefix:前綴;chkAll:全選框;chkSingle:單選框ID
????
????使用方法:
????if(e.Item.ItemType?==?ListItemType.Header)
????{
????????((CheckBox)e.Item.Cells[1].FindControl("chkAll")).Attributes.Add("onclick","CheckAll('"?+?this.dg.ClientID.ToString()?+?"','chkAll','chkSingle');");
????}
*/
function?CheckAll(prefix,chkAll,chkSingle)
{
????
var?indexChkAll;
????
if(prefix.length?!=?0)
????{
????????indexChkAll????????
=?prefix?+?"__ctl2_"?+?chkAll;
????}
????
else
????{
????????indexChkAll????????
=?chkAll;
????}
????
var?objChkAll?=?document.getElementById(indexChkAll);
????
var?tempObj;
????
for(var?i=0;i<document.forms[0].elements.length;i++)
????{????
????????tempObj?
=?document.forms[0].elements[i];
????????
if(tempObj.type?==?"checkbox"?&&?tempObj.id?!=?indexChkAll?&&?tempObj.id.indexOf(chkSingle)?!=?-1)
????????{
????????????tempObj.checked?
=?objChkAll.checked;
????????}
????}
}
/*?分頁
????參數說明:
????prefix:前綴;chkAll:全選框;chkSingle:單選框ID
????
????使用方法:
????if(e.Item.ItemType?==?ListItemType.AlternatingItem?||?e.Item.ItemType?==?ListItemType.Item)
????{
????????((CheckBox)e.Item.Cells[1].FindControl("chkSingle")).Attributes.Add("onclick","CheckSingle('"?+?this.dg.ClientID.ToString()?+?"','chkAll','chkSingle');");
????}
*/
function?CheckSingle(prefix,chkAll,chkSingle)
{
????
var?indexChkAll;
????
if(prefix.length?!=?0)
????{
????????indexChkAll????????
=?prefix?+?"__ctl2_"?+?chkAll;
????}
????
else
????{
????????indexChkAll????????
=?chkAll;
????}
????
var?objChkAll?=?document.getElementById(indexChkAll);
????
var?tempObj;
????
var?allCount????=?0;
????
var?checkCount????=?0;
????
for(var?i=0;i<document.forms[0].elements.length;i++)
????{????
????????tempObj?
=?document.forms[0].elements[i];
????????
if(tempObj.type?==?"checkbox"?&&?tempObj.id?!=?indexChkAll?&&?tempObj.id.indexOf(chkSingle)?!=?-1)
????????{
????????????
if(tempObj.checked)
????????????{
????????????????checkCount
++;
????????????}
????????????
else
????????????{
????????????????objChkAll.checked?
=?false;
????????????????
//break;
????????????}
????????????allCount
++;
????????}
????}
????
if(checkCount?!=?allCount)
????{
????????objChkAll.checked?
=?false;
????}
????
else
????{
????????
if(allCount?!=?0)
????????{
????????????objChkAll.checked?
=?true;
????????}
????}
}


?

?

?

?

?

?

?

轉載于:https://www.cnblogs.com/9421/archive/2009/12/22/1629626.html

總結

以上是生活随笔為你收集整理的.net之 datagrid的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。