★33°空間‰


                                 ----★七彩服飾  【最潮拜☆日單精品】【Esprit】【Hotwind】滿150包郵-女裝-流行女裝    www.7color.hb.cn

                                 ----智力比知識(shí)重要,素質(zhì)比智力重要,覺悟比素質(zhì)更重要
          posts - 110,comments - 35,trackbacks - 0

          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>
          ???
          ??? 說明:
          ??? (1) 在每個(gè)標(biāo)簽內(nèi)主要是? ForeColor?? BackColor? Font-Bold 這幾個(gè)屬性值
          ???
          ??? 2. 為 DataGrid 控件添加綁定列
          ???
          ??? <asp:BoundColumn DataField="" ReadOnly="True" HeaderText=""></asp:BoundColumn>
          ??? 說明:
          ??? (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è)值。
          ??? ?冒號后的字符(常規(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 控件中是否可見。
          ??? (4) ReadOnly 設(shè)置些列是否只讀,若是只讀的話,則不能修改.
          ??? (5) SortExpression 獲取或設(shè)置選擇進(jìn)行排序的列時(shí)傳遞到 OnSortCommand 方法的字段或表達(dá)式的名稱。
          ??

          ??3. 為 DataGrid 控件添加模板列
          ??? <asp:TemplateColumn HeaderText="類別">
          ??? ?<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>
          ??? 說明:
          ??? (1) 基本框架是
          ??? ? <asp:TemplateColumn HeaderText="類別">
          ????<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)?為枚舉類型列應(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) 為長字符串應(yīng)用模板列,如一篇文章的內(nèi)容
          ??還未做過
          ??
          ?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 超級鏈接樣式按鈕的列 | PushButton 普通按鈕的列。

          ?6. 為 DataGrid 控件添加超鏈接列
          ?<asp:HyperLinkColumn Text="添加子類" DataNavigateUrlField="ActorclassID" DataNavigateUrlFormatString="addActorClass.aspx?classID={0}"></asp:HyperLinkColumn>
          ?(1) 為每一行設(shè)置相同的文字及跳轉(zhuǎn)的URL地址
          ??設(shè)置 Text 和 NavigateUrl 屬性,則列中的所有超級鏈接將共享同一標(biāo)題和 URL
          ?(2) 為每一行設(shè)置不同的文字及不同跳轉(zhuǎn)的URL地址
          ??A. ?用 DataTextField 設(shè)置數(shù)據(jù)源字段,若還想在原數(shù)據(jù)的基礎(chǔ)上加工一下(如字段值為300,想顯示為300元)
          ???則再設(shè)置 DataTextFormatString 字段
          ??B.?用DataNavigateUrlField 及 DataNavigateUrlFormatString 來設(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ī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"));
          ??}
          ??說明
          ??(1) DataGrid 事件處理程序的格式
          ???MethodName(Object sender, DataGridCommandEventArgs e)
          ??(2) 更新按鈕的說明
          ???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)
          ????{
          ?????str2="1";
          ????}
          ????else?
          ????{
          ?????str2="0";
          ????}
          ????賦值給 str2 ,原因是插入到數(shù)據(jù)庫的布爾型值只能是 1 或者 0
          ???D. 獲取編輯狀態(tài)中的文本值,即該列是只讀的.
          ????string storyID = (e.Item.Cells[0].Text).ToString();
          ?
          ?8. 為 DataGrid 控件添加分頁事件
          ??在 DataGrid 控件標(biāo)簽中加入如下代碼
          ??OnPageIndexChanged="DataGrid1_PageIndexChanged"
          ??在后臺(tái)中加入如下代碼
          ??/// <summary>
          ??/// 響應(yīng)分頁事件
          ??/// </summary>
          ??/// <param name="sender"></param>
          ??/// <param name="e"></param>
          ??public void DataGrid1_Page(Object sender, DataGridPageChangedEventArgs e)
          ??{
          ???DataGrid1.CurrentPageIndex = e.NewPageIndex;
          ???DataBind();
          ??}
          ?
          ?9. 為 DataGrid 控件添加綁定事件,即在 DataGrid綁定時(shí)發(fā)生的事件處理
          ??一般用些事件來,做一些頁面上的效果.如更改背景色,文本框大小等.
          ??OnItemDataBound="DataGrid1_ItemDataBound"
          ??/// <summary>
          ??/// 響應(yīng)DataGrid綁定事件
          ??/// </summary>
          ??/// <param name="sender"></param>
          ??/// <param name="e"></param>
          ??public void DataGrid1_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
          ??{
          ???if (e.Item.ItemType == ListItemType.Item)
          ???{
          ????e.Item.Attributes.Add("onmouseover","this.style.backgroundColor='#c8dafa'");
          ????e.Item.Attributes.Add("onmouseout","this.style.backgroundColor='white'");

          ???}
          ???else if (e.Item.ItemType == ListItemType.AlternatingItem)
          ???{
          ????e.Item.Attributes.Add("onmouseover","this.style.backgroundColor='#c8dafa'");
          ????e.Item.Attributes.Add("onmouseout","this.style.backgroundColor='#f6f6f6'");
          ???}
          ??}
          ??
          ?10. 為 DataGrid 控件添加接鈕處理事件程序
          ??在 DataGrid 控件標(biāo)簽中加入如下代碼
          ??OnItemCommand="ItemsGrid_Command"
          ??在后臺(tái)中加入如下代碼
          ??public void ItemsGrid_Command(Object sender, DataGridCommandEventArgs e)
          ??{
          ???switch(((LinkButton)e.CommandSource).CommandName)
          ???{

          ????case "Delete":
          ?????int classID = Int32.Parse((e.Item.Cells[0].Text).ToString());
          ?????ActorClass.DeleteActorClass(classID);
          ?????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"));
          ?????break;

          ?????// Add other cases here, if there are multiple ButtonColumns in
          ?????// the DataGrid control.
          ????case "hidden":
          ?????int actorID = Int32.Parse((e.Item.Cells[0].Text).ToString());
          ?????ActorClass.HiddenActorClass(actorID);
          ?????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"));
          ?????break;
          ????case "MoveUp":
          ?????int actorclassID = Int32.Parse((e.Item.Cells[0].Text).ToString());
          ?????string orderID = (e.Item.Cells[5].Text).ToString();
          ?????ActorClass.MoveUp(orderID,actorclassID);
          ?????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"));
          ?????break;
          ????case "MoveDown":
          ?????actorclassID = Int32.Parse((e.Item.Cells[0].Text).ToString());
          ?????orderID = (e.Item.Cells[5].Text).ToString();
          ?????ActorClass.MoveDown(orderID,actorclassID);
          ?????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 orderID"));
          ?????break;
          ????

          ????default:
          ?????// Do nothing.
          ?????break;

          ???}
          ??}

          ?11. 為 DataGrid添加模板列,但是內(nèi)容根據(jù)字段值來顯示"鏈接",還是文本
          ??以下三個(gè)都是,根據(jù)字段列不同,而顯示內(nèi)容及顯示控件不同的處理代碼.
          ??<asp:TemplateColumn HeaderText="子菜單">
          ???<ItemTemplate>
          ????<%# ActorClassManage.hasLeaf(DataBinder.Eval(Container.DataItem,"ActorClassID").ToString(),DataBinder.Eval(Container.DataItem,"child").ToString())%>
          ???</ItemTemplate>
          ??</asp:TemplateColumn>
          ??public static string hasLeaf(string id,string child)
          ??{
          ???string lRtn = "";
          ???if (Int32.Parse(child) > 0)
          ????lRtn="<a href='Actorclassmanage.aspx?classID="+id+"'><font color=blue>子菜單(" + child + ")</font></a>";
          ???else
          ????lRtn = "無子菜單";

          ???return lRtn;
          ??}
          ??<asp:TemplateColumn HeaderText="屬性">
          ???<ItemTemplate>
          ????<asp:LinkButton Text='<%# IsHidden(DataBinder.Eval(Container.DataItem,"ActorClassID").ToString(),(bool)DataBinder.Eval(Container.DataItem,"Enabled")) %>' runat="server" CommandName="hidden" ID="Linkbutton1"></asp:LinkButton>
          ???</ItemTemplate>
          ??</asp:TemplateColumn>
          ??public static string IsHidden(string id,bool enabled)
          ??{
          ???string lRtn = "";
          ???if (enabled == true)
          ???{
          ????lRtn = "[顯示]";
          ???}
          ???else
          ???{
          ????lRtn = "隱藏";
          ???}
          ???return lRtn;
          ??}
          ??public static void Sort(string actorclassID, string orderID)
          ??{
          ???string temp = "";
          ???if (Int32.Parse(BgPicManage.GetMaxCode("actorclass","orderID")) == Int32.Parse(orderID))
          ???{
          ????temp += "<ipnut type='submit' value='向下移'>";
          ???}
          ???if (Int32.Parse(orderID) == 0)
          ???{
          ????temp += "<ipnut type='submit' value='向上移'>";
          ???}
          ??}
          ??
          ?12. DataGrid 控件自定義分頁代碼
          ?
          ??將下列代碼放于包含<DataGrid>的form中去,
          ??<p style="FONT-SIZE:9pt" align="center">
          ????????? <asp:label id="lblPageCount" runat="server"></asp:label>
          ????????? <asp:label id="lblCurrentIndex" runat="server"></asp:label>
          ????????? <asp:linkbutton id="btnFirst" onclick="PagerButtonClick" runat="server" Font-Name="verdana"
          ?????????? Font-size="8pt" ForeColor="navy" CommandArgument="0"></asp:linkbutton>
          ????????? <asp:linkbutton id="btnPrev" onclick="PagerButtonClick" runat="server" Font-Name="verdana"
          ?????????? Font-size="8pt" ForeColor="navy" CommandArgument="prev"></asp:linkbutton>
          ????????? <asp:linkbutton id="btnNext" onclick="PagerButtonClick" runat="server" Font-Name="verdana"
          ?????????? Font-size="8pt" ForeColor="navy" CommandArgument="next"></asp:linkbutton>
          ????????? <asp:linkbutton id="btnLast" onclick="PagerButtonClick" runat="server" Font-Name="verdana"
          ?????????? Font-size="8pt" ForeColor="navy" CommandArgument="last"></asp:linkbutton>
          ??????? </p>
          ???????
          ??????? 后臺(tái)代碼
          ???????
          ??????? private void Page_Load(object sender, System.EventArgs e)
          ??????? {
          ????????? // 在此處放置用戶代碼以初始化頁面
          ????????? btnFirst.Text = "最首頁";
          ????????? btnPrev.Text = "前一頁";
          ????????? btnNext.Text = "下一頁";
          ????????? btnLast.Text = "最后頁";
          ????????? //綁定數(shù)據(jù)源
          ????????? if (!Page.IsPostBack)
          ????????? {
          ????????? ?OpenDatabase();
          ????????? ?BindGrid();
          ????????? }
          ??????? }
          ???????
          ??????? //用于顯示"第幾頁,總*頁"
          ??????? private void ShowStats()
          ??{
          ????lblCurrentIndex.Text = "第 " + (MyDataGrid.CurrentPageIndex + 1).ToString() + " 頁";
          ????lblPageCount.Text = "總共 " + MyDataGrid.PageCount.ToString() + " 頁";
          ??}
          ??
          ??//響應(yīng)分頁按鈕
          ??public void PagerButtonClick(object sender, EventArgs e)
          ??????? {
          ??????? ?string arg = ((LinkButton)sender).CommandArgument.ToString();
          ???????? ?switch(arg)
          ???????? ?{
          ????????? ??case "next":
          ?????????? ???if (MyDataGrid.CurrentPageIndex < (MyDataGrid.PageCount - 1))
          ?????????? ???{
          ???????????? ??MyDataGrid.CurrentPageIndex += 1;
          ??? ??????? ??}
          ??????? ??? ??break;
          ????????? ??case "prev":
          ?????????? ???if (MyDataGrid.CurrentPageIndex > 0)
          ?????????? ???{
          ??????????? ???MyDataGrid.CurrentPageIndex -= 1;
          ?????????? ???}
          ?????????? ???break;
          ????????? ??case "last":
          ?????????? ???MyDataGrid.CurrentPageIndex = (MyDataGrid.PageCount - 1);
          ?????????? ???break;
          ????????? ??default:
          ?????????? ???MyDataGrid.CurrentPageIndex = System.Convert.ToInt32(arg);
          ?????????? ???break;
          ???????? ?}
          ???????? ?BindGrid();
          ???????? ?ShowStats();
          ??????? }

          posted on 2006-10-30 14:25 圣域飛俠 閱讀(303) 評論(0)  編輯  收藏

          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 兴义市| 西和县| 阿克苏市| 资中县| 仁怀市| 射洪县| 青冈县| 眉山市| 中卫市| 高阳县| 来宾市| 纳雍县| 合阳县| 故城县| 左云县| 佛教| 黔南| 黄龙县| 孝义市| 鸡泽县| 沙湾县| 新和县| 松江区| 西藏| 中江县| 五常市| 佛学| 洛阳市| SHOW| 永城市| 游戏| 虹口区| 且末县| 宁海县| 宣威市| 宁波市| 永兴县| 马关县| 奎屯市| 成安县| 深州市|