?? datagrid使用心得(附大量代碼).txt
字號(hào):
DataGrid使用心得(附大量代碼)
http://dev.21tx.com 2006年05月08日 luoyixiaoniba
每日文章精萃
.Net:淺議C++/CLI的gcnew關(guān)鍵字 Java:如何打造實(shí)用網(wǎng)站
ASP:Asp Object 之:AppendToLog PHP:淺談Windows下 PHP4.0與oracle 8的連
JSP:用緩沖技術(shù)提高JSP應(yīng)用的性能和穩(wěn)定 CGI:CGI教學(xué):CGI安全問(wèn)題
VB:如何獲得系統(tǒng)光驅(qū)的盤(pán)符 VC:創(chuàng)建DirectX環(huán)境
DataGrid使用心得(附大量代碼)
1. 為 DataGrid 控件設(shè)計(jì)樣式
在<ASP:datagrid id="DataGrid1" runat="server">之后添加如下代碼
<FooterStyle ForeColor="Black" BackColor="#CCCCCC"></FooterStyle>
<SelectedItemStyle Font-Bold="True" ForeColor="White" BackColor="#008A8C"></SelectedItemStyle>
<AlternatingItemStyle BackColor="Gainsboro"></AlternatingItemStyle>
<ItemStyle ForeColor="Black" BackColor="#EEEEEE"></ItemStyle>
<HeaderStyle Font-Bold="True" ForeColor="White" BackColor="#000084"></HeaderStyle>
說(shuō)明:
(1) 在每個(gè)標(biāo)簽內(nèi)主要是 ForeColor BackColor Font-Bold 這幾個(gè)屬性值
2. 為 DataGrid 控件添加綁定列
<asp:BoundColumn DataField="" ReadOnly="True" HeaderText=""></asp:BoundColumn>
說(shuō)明:
(1) 在標(biāo)簽內(nèi)的基本屬性是 DataField / HeaderText
(2) DataFormatString 用于 獲取或設(shè)置指定列中各項(xiàng)的顯示格式的字符串。
形式為 { A: Bxx }。例如,格式化字符串 {0:F2} 將顯示帶兩位小數(shù)的定點(diǎn)數(shù)。
其中A值只能設(shè)置為 0,因?yàn)槊總€(gè)單元格中只有一個(gè)值。
冒號(hào)后的字符(常規(guī)示例中為 B)指定值的顯示格式
C 以貨幣格式顯示數(shù)值。
D 以十進(jìn)制格式顯示數(shù)值。
E 以科學(xué)記數(shù)法(指數(shù))格式顯示數(shù)值。
F 以固定格式顯示數(shù)值。
G 以常規(guī)格式顯示數(shù)值。
N 以數(shù)字格式顯示數(shù)值。
X 以十六進(jìn)制格式顯示數(shù)值。
(3) Visible 獲取或設(shè)置一個(gè)值,該值指示此列在 DataGrid 控件中是否可見(jiàn)。
(4) ReadOnly 設(shè)置些列是否只讀,若是只讀的話(huà),則不能修改.
(5) SortExpression 獲取或設(shè)置選擇進(jìn)行排序的列時(shí)傳遞到 OnSortCommand 方法的字段或表達(dá)式的名稱(chēng)。
3. 為 DataGrid 控件添加模板列
<asp:TemplateColumn HeaderText="類(lèi)別">
<ItemTemplate>
<asp:Label Text='<%# DataBinder.Eval(Container.DataItem, "actorclassname") %>' runat="server" ID="Label1"/>
</ItemTemplate>
<EditItemTemplate>
<select name="sltclassname">
<% = ActorClass.GetParentClass(0) %>
</select>
</EditItemTemplate>
</asp:TemplateColumn>
說(shuō)明:
(1) 基本框架是
<asp:TemplateColumn HeaderText="類(lèi)別">
<ItemTemplate></ItemTemplate>
</asp:TemplateColumn>
(2) 全面的模板列
<asp:TemplateColumn>
<HeaderTemplate>
<b> Tax </b>
</HeaderTemplate>
<ItemTemplate>
<asp:Label
Text='<%# DataBinder.Eval(Container.DataItem, "Tax") %>'
runat="server"/>
</ItemTemplate>
<EditItemTemplate>
<asp:CheckBox
Text="Taxable"
runat="server"/>
</EditItemTemplate>
<FooterTemplate>
<asp:HyPerlink id="HyperLink1"
Text="Microsoft"
NavigateUrl="http://www.microsoft.com"
runat="server"/>
</FooterTemplate>
</asp:TemplateColumn>
(3) 為布爾型列應(yīng)用模板列
<asp:TemplateColumn>
<ItemTemplate>
<asp:Label
Text='<%# DataBinder.Eval(Container.DataItem, "Tax") %>'
runat="server"/>
</ItemTemplate>
<EditItemTemplate>
<asp:CheckBox
Text="Taxable"
runat="server"/>
</EditItemTemplate>
</asp:TemplateColumn>
在正常狀態(tài),用 Label控件顯示
在編輯狀態(tài),用 CheckBox控件顯示
(4) 為枚舉類(lèi)型列應(yīng)用模板列,如業(yè)務(wù)地區(qū)(全網(wǎng)/廣東/云南等等)
<asp:TemplateColumn HeaderText="處理方式">
<ItemTemplate>
<asp:Label ID="lbStatus">
<%# DataBinder.Eval(Container, "DataItem.DealWith") %>
</asp:Label>
</ItemTemplate>
<EditItemTemplate>
<asp:DropDownList id="dpStatus2" runat="server" DataTextField="status">
<asp:ListItem Value="Log">Log(日志)</asp:ListItem>
<asp:ListItem Value="SendSms">SendSms(短信)</asp:ListItem>
</asp:DropDownList>
</EditItemTemplate>
</asp:TemplateColumn>
在正常狀態(tài),用 Label控件顯示
在編輯狀態(tài),用 DropDownList控件顯示
(5) 為長(zhǎng)字符串應(yīng)用模板列,如一篇文章的內(nèi)容
還未做過(guò)
4. 為 DataGrid 控件添加按鈕列
<asp:ButtonColumn
HeaderText="Remove from cart"
ButtonType="PushButton"
Text="Remove"
CommandName="RemoveFromCart" />
(1) 要使用按鈕列,必須在 DataGrid 控件中添加 OnItemCommand 屬性,并為該事件添加處理方法.
(2) 模板列可以實(shí)現(xiàn)按鈕列能實(shí)現(xiàn)的任何功能.
5. 為 DataGrid 控件添加編輯列
<asp:EditCommandColumn ButtonType="LinkButton" UpdateText="更新" HeaderText="編輯" CancelText="取消" EditText="編輯"></asp:EditCommandColumn>
(1) ButtonType 有兩個(gè)值: LinkButton 超級(jí)鏈接樣式按鈕的列 | PushButton 普通按鈕的列。
6. 為 DataGrid 控件添加超鏈接列
<asp:HyperLinkColumn Text="添加子類(lèi)" DataNavigateUrlField="ActorclassID" DataNavigateUrlFormatString="addActorClass.aspx?classID={0}"></asp:HyperLinkColumn>
(1) 為每一行設(shè)置相同的文字及跳轉(zhuǎn)的URL地址
設(shè)置 Text 和 NavigateUrl 屬性,則列中的所有超級(jí)鏈接將共享同一標(biāo)題和 URL
(2) 為每一行設(shè)置不同的文字及不同跳轉(zhuǎn)的URL地址
A. 用 DataTextField 設(shè)置數(shù)據(jù)源字段,若還想在原數(shù)據(jù)的基礎(chǔ)上加工一下(如字段值為300,想顯示為300元)
則再設(shè)置 DataTextFormatString 字段
B. 用DataNavigateUrlField 及 DataNavigateUrlFormatString 來(lái)設(shè)置URL地址
用DataTextField = "money" DataTextFormatString = "{0}元"
C. 舉例
DataNavigateUrlField="ActorclassID" DataNavigateUrlFormatString="addActorClass.aspx?classID={0}"
7. 為 DataGrid 控件添加"編輯"代碼
在 DataGrid 標(biāo)簽中加入
OnUpdateCommand="DataGrid1_Update" OnCancelCommand="DataGrid1_Cancel" OnEditCommand="DataGrid1_Edit"代碼
在codeBehind頁(yè)面加入如下代碼
///響應(yīng)編輯按鈕
public void DataGrid1_Edit(Object sender, DataGridCommandEventArgs e)
{
DataGrid1.EditItemIndex = e.Item.ItemIndex;
if (Request.QueryString.Get("classID") != null)
Common.BindData(DataGrid1,Common.GetSource("select * from ActorClass where parentID=" + Request.QueryString.Get("classID") + " order by depth,orderID desc"));
else
Common.BindData(DataGrid1,Common.GetSource("select * from ActorClass where depth=1 order by depth,orderID desc"));
}
///響應(yīng)取消按鈕
public void DataGrid1_Cancel(Object sender, DataGridCommandEventArgs e)
{
DataGrid1.EditItemIndex = -1;
if (Request.QueryString.Get("classID") != null)
Common.BindData(DataGrid1,Common.GetSource("select * from ActorClass where parentID=" + Request.QueryString.Get("classID") + " order by depth,orderID desc"));
else
Common.BindData(DataGrid1,Common.GetSource("select * from ActorClass where depth=1 order by depth,orderID desc"));
}
///響應(yīng)更新按鈕
public void DataGrid1_Update(Object sender, DataGridCommandEventArgs e)
{
TextBox ClassNameText = (TextBox)e.Item.Cells[1].Controls[0];
string className = ClassNameText.Text;
int classID = Int32.Parse((e.Item.Cells[0].Text).ToString());
TextBox orderID2 = (TextBox)e.Item.Cells[5].Controls[0];
int orderID = Int32.Parse(orderID2.Text);
ActorClass.ModifyActorClass(className,classID,orderID);
DataGrid1.EditItemIndex = -1;
if (Request.QueryString.Get("classID") != null)
Common.BindData(DataGrid1,Common.GetSource("select * from ActorClass where parentID=" + Request.QueryString.Get("classID") + " order by depth,orderID desc"));
else
Common.BindData(DataGrid1,Common.GetSource("select * from ActorClass where depth=1 order by depth,orderID desc"));
}
說(shuō)明
(1) DataGrid 事件處理程序的格式
MethodName(Object sender, DataGridCommandEventArgs e)
(2) 更新按鈕的說(shuō)明
A. 獲取編輯狀態(tài)中的文本框
TextBox ClassNameText = (TextBox)e.Item.Cells[1].Controls[0];
string className = ClassNameText.Text;
B. 獲取編輯狀態(tài)中的下拉列表框
方法一
int classID;
classID = Int32.Parse(Request.Form.Get("sltclassname"));
方法二
DropDownList bbb = (DropDownList)e.Item.Cells[10].FindControl("dpStatus2");
string ddpValue = bbb.SelectedValue
C. 獲取編輯狀態(tài)中的復(fù)選框
bool boolEnabled = ((CheckBox)e.Item.FindControl("chk_enabled")).Checked;
String str2;
if (boolEnabled)
{
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -