1、鼠標移到ListView某一行時(shí)改變該行的背景色方法
前端代碼:
- <asp:ListView ID="ListView1" runat="server"
- onitemdatabound="ListView1_ItemDataBound">
- <LayoutTemplate>
- <table id="Table1" runat="server" border="0" style="">
- <tr runat="server" id="itemPlaceholder" />
- </table>
- </LayoutTemplate>
- <ItemTemplate>
- <tr runat="server" id="Tr">
- <td>
- <%#Eval("ID") %>
- </td>
- <td>
- <%# Eval("name") %>
- </td>
- <td>
- <%# Eval("age") %>
- </td>
- </tr>
- </ItemTemplate>
- </asp:ListView>
后臺代碼:
- protected void ListView1_ItemDataBound(object sender, ListViewItemEventArgs e)
- {
- if (e.Item.ItemType==ListViewItemType.DataItem)
- {
- (e.Item.FindControl("Tr") as HtmlTableRow).Attributes.
- Add("onmouseover", "c=this.style.backgroundColor;this.style.backgroundColor='#00A9FF'");
- (e.Item.FindControl("Tr") as HtmlTableRow).Attributes.
- Add("onmouseout", "this.style.backgroundColor=c");
- }
- }
2、ListView和和下拉菜單DropDownList結合(其他控件其實(shí)也差不多):
前端代碼:
- <asp:ListView ID="ListView1" runat="server" OnItemDataBound="ListView1_ItemDataBound">
- <LayoutTemplate>
- <table id="Table1" runat="server" border="0" style="">
- <tr runat="server" id="itemPlaceholder" />
- </table>
- </LayoutTemplate>
- <ItemTemplate>
- <tr runat="server" id="Tr">
- <td>
- <asp:Label ID="ID" runat="server" Text='<%#Eval("ID") %>'></asp:Label>
- </td>
- <td>
- <%# Eval("name") %>
- </td>
- <td>
- <%# Eval("age") %>
- </td>
- <td>
- <asp:DropDownList ID="SexDropDownList" runat="server">
- </asp:DropDownList>
- </td>
- </tr>
- </ItemTemplate>
- </asp:ListView>
模擬數據提供代碼:
- namespace Data
- {
- /// <summary>
- ///DataAccess 的摘要說(shuō)明
- /// </summary>
- public class DataAccess
- {
- public List<Employee> List;
- public DataAccess()
- {
- List = new List<Employee>();
- Employee e1 = new Employee { ID = 1, Name = "A", Age = 10 ,Sex=1};
- Employee e2 = new Employee { ID = 3, Name = "M", Age = 30 ,Sex=0};
- Employee e3 = new Employee { ID = 2, Name = "B", Age = 40,Sex=1 };
- Employee e4 = new Employee { ID = 4, Name = "S", Age = 19,Sex=0 };
- Employee e5 = new Employee { ID = 6, Name = "X", Age = 18 ,Sex=1};
- Employee e6 = new Employee { ID = 5, Name = "W", Age = 20 ,Sex=0};
- List.Add(e1);
- List.Add(e2);
- List.Add(e3);
- List.Add(e4);
- List.Add(e5);
- List.Add(e6);
- }
- public Employee Find( int id)
- {
- foreach (var item in List)
- {
- if (item.ID == id)
- return item;
- }
- return null;
- }
- }
- public class Employee
- {
- public int ID { get; set; }
- public string Name { get; set; }
- public int Age { get; set; }
- public int Sex { get; set; }
- }
- }
后臺代碼:
- protected void ListView1_ItemDataBound(object sender, ListViewItemEventArgs e)
- {
- DropDownList SexDropDownList = e.Item.FindControl("SexDropDownList") as DropDownList;
- int sex = da.Find(Convert.ToInt32((e.Item.FindControl("ID") as Label).Text)).Sex;
- ListItem listItem;
- if (sex == 0)
- {
- listItem = new ListItem("男", sex.ToString());
- }
- else
- {
- listItem = new ListItem("女", sex.ToString());
- }
- SexDropDownList.Items.Add(listItem);
- SexDropDownList.Enabled = false;
- }
3、ListView實(shí)現刪除時(shí)彈出確認對話(huà)框:
前端代碼
- <asp:ListView ID="ListView1" runat="server" OnItemDataBound="ListView1_ItemDataBound">
- <LayoutTemplate>
- <table id="Table1" runat="server" border="0" style="">
- <tr runat="server" id="itemPlaceholder" />
- </table>
- </LayoutTemplate>
- <ItemTemplate>
- <tr runat="server" id="Tr">
- <td>
- <asp:Label ID="ID" runat="server" Text='<%#Eval("ID") %>'></asp:Label>
- </td>
- <td>
- <%# Eval("name") %>
- </td>
- <td>
- <%# Eval("age") %>
- </td>
- <td>
- <asp:Button ID="Delete" runat="server" Text="Delete" />
- </td>
- </tr>
- </ItemTemplate>
- </asp:ListView>
后臺代碼
- protected void ListView1_ItemDataBound(object sender, ListViewItemEventArgs e)
- {
- if (e.Item.ItemType == ListViewItemType.DataItem)
- {
- (e.Item.FindControl("Delete") as Button).Attributes.Add
- ("onclick", "javascript:return confirm('你確認要刪除:\""
- + (e.Item.FindControl("id") as Label).Text + "\"嗎?')");
- }
- }
4、ListView實(shí)現自動(dòng)編號
- <asp:ListView ID="ListView1" runat="server" OnItemDataBound="ListView1_ItemDataBound">
- <LayoutTemplate>
- <table id="Table1" runat="server" border="0" style="">
- <tr runat="server" id="itemPlaceholder" />
- </table>
- </LayoutTemplate>
- <ItemTemplate>
- <tr runat="server" id="Tr">
- <td>
- <asp:Label ID="Num" runat="server"></asp:Label>
- </td>
- <td>
- <asp:Label ID="ID" runat="server" Text='<%#Eval("ID") %>'></asp:Label>
- </td>
- <td>
- <%# Eval("name") %>
- </td>
- <td>
- <%# Eval("age") %>
- </td>
- <td>
- <asp:Button ID="Delete" runat="server" Text="Delete" />
- </td>
- </tr>
- </ItemTemplate>
- </asp:ListView>
后臺代碼
- int Num = 1;
- protected void ListView1_ItemDataBound(object sender, ListViewItemEventArgs e)
- {
- if (e.Item.ItemType == ListViewItemType.DataItem)
- {
- (e.Item.FindControl("Num") as Label).Text = Num.ToString();
- Num++;
- }
- }
5、將ListView中的內容以Excel導出
前端代碼:
- <div>
- <asp:ListView ID="ListView1" runat="server">
- <ItemTemplate>
- <tr>
- <td id="Td1" runat="server" style="">
- <asp:Label ID="idLabel" runat="server" Text='<%# Eval("name") %>' />
- <br />
- </td>
- <td>
- <asp:Label ID="xLabel" runat="server" Text='<%# Eval("Age") %>' />
- <br />
- </td>
- </tr>
- </ItemTemplate>
- <LayoutTemplate>
- <table id="Table1" runat="server" border="0" style="">
- <tr runat="server" id="itemPlaceholder" />
- </table>
- </LayoutTemplate>
- </asp:ListView>
- </div><asp:Button ID="Button1" runat="server" Text="Button"
- onclick="Button1_Click" />
后臺代碼
- public partial class ListView技巧_Code13 : System.Web.UI.Page
- {
- DataAccess da;
- protected void Page_Load(object sender, EventArgs e)
- {
- if (Session["da"] == null)
- {
- da = new DataAccess();
- Session["da"] = da;
- }
- else
- {
- da = Session["da"] as DataAccess;
- }
- if (!IsPostBack)
- {
- Bind();
- }
- }
- private void Bind()
- {
- ListView1.DataSource = da.List;
- ListView1.DataBind();
- }
- private void Export(string FileType, string FileName)
- {
- Response.Charset = "GB2312";
- Response.ContentEncoding = System.Text.Encoding.UTF7;
- Response.AppendHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(FileName, Encoding.UTF8).ToString());
- Response.ContentType = FileType;
- this.EnableViewState = false;
- StringWriter tw = new StringWriter();
- HtmlTextWriter hw = new HtmlTextWriter(tw);
- ListView1.RenderControl(hw);
- Response.Write(tw.ToString());
- Response.End();
- }
- protected void Button1_Click(object sender, EventArgs e)
- {
- Export("application/ms-excel", "employee.xls");
- }
- }
6、高級分頁(yè)
使用DataPager分頁(yè)雖然簡(jiǎn)單但是對于大數據量時(shí)性能會(huì )成問(wèn)題,因為這種分頁(yè)仍然是一次性將數據載入到控件中的,暫時(shí)沒(méi)找到使用DataPager好的解決方案,這里使用一個(gè)網(wǎng)上比較流行的開(kāi)源的.net分頁(yè)控件AspNetPager,下載地址為: http://www.webdiyer.com/
前端代碼:
- <%@ Register Assembly="AspNetPager" Namespace="Wuqi.Webdiyer" TagPrefix="webdiyer" %>
- <asp:ListView ID="ListView1" runat="server">
- <LayoutTemplate>
- <table id="Table1" runat="server" border="0" style="">
- <tr runat="server" id="itemPlaceholder" />
- </table>
- </LayoutTemplate>
- <ItemTemplate>
- <tr>
- <td>
- <%#Eval("ID") %>
- </td>
- <td>
- <%# Eval("name") %>
- </td>
- <td>
- <%# Eval("age") %>
- </td>
- </tr>
- </ItemTemplate>
- </asp:ListView>
- <webdiyer:AspNetPager ID="AspNetPager1" runat="server" UrlPaging="false" ShowPageIndexBox="Always"
- PageIndexBoxType="DropDownList" ShowCustomInfoSection="Left" PageIndexBoxStyle="width:19px"
- CustomInfoHTML="共%PageCount%頁(yè),%RecordCount%條記錄,當前第%CurrentPageIndex%頁(yè),每頁(yè)顯示%PageSize%條"
- HorizontalAlign="Center" PageSize="2" FirstPageText="首頁(yè)" LastPageText="末頁(yè)" NextPageText="下一頁(yè)"
- PrevPageText="前一頁(yè)" TextAfterPageIndexBox="頁(yè)" TextBeforePageIndexBox="轉到第" EnableTheming="true"
- OnPageChanging="AspNetPager1_PageChanging">
- </webdiyer:AspNetPager>
后臺代碼:
- public partial class ListView技巧_Code14 : System.Web.UI.Page
- {
- DataAccess da;
- protected void Page_Load(object sender, EventArgs e)
- {
- if (Session["da"] == null)
- {
- da = new DataAccess();
- Session["da"] = da;
- }
- else
- {
- da = Session["da"] as DataAccess;
- }
- if (!IsPostBack)
- {
- Bind();
- }
- }
- private void Bind()
- {
- ListView1.DataSource = da.GetEmployee(1,2);
- AspNetPager1.RecordCount = da.List.Count;
- ListView1.DataBind();
- }
- protected void AspNetPager1_PageChanging(object src, Wuqi.Webdiyer.PageChangingEventArgs e)
- {
- ListView1.DataSource = da.GetEmployee(e.NewPageIndex*2-1, 2);
- ListView1.DataBind();
- }
- }
模擬數據提供代碼:
- public class DataAccess
- {
- public List<Employee> List;
- public DataAccess()
- {
- List = new List<Employee>();
- List = new List<Employee>();
- Employee e1 = new Employee { ID = 1, Name = "A", Age = 10, Sex = 1 };
- Employee e2 = new Employee { ID = 3, Name = "M", Age = 30, Sex = 0 };
- Employee e3 = new Employee { ID = 2, Name = "B", Age = 40, Sex = 1 };
- Employee e4 = new Employee { ID = 4, Name = "S", Age = 19, Sex = 0 };
- Employee e5 = new Employee { ID = 6, Name = "X", Age = 18, Sex = 1 };
- Employee e6 = new Employee { ID = 5, Name = "W", Age = 20, Sex = 0 };
- List.Add(e1);
- List.Add(e2);
- List.Add(e3);
- List.Add(e4);
- List.Add(e5);
- List.Add(e6);
- }
- public List<Employee> GetEmployee(int startIndex, int rowsCount)
- {
- List<Employee> listTemp = new List<Employee>();
- for (int i = startIndex; i < startIndex+rowsCount; i++)
- {
- listTemp.Add(List[i-1]);
- }
- return listTemp;
- }
- }
7、內嵌DetailsView控件
前端代碼
- <asp:ListView ID="ListView1" runat="server" OnSelectedIndexChanging="ListView1_SelectedIndexChanging">
- <LayoutTemplate>
- <table id="Table1" runat="server" border="0" style="">
- <tr runat="server" id="itemPlaceholder" />
- </table>
- </LayoutTemplate>
- <ItemTemplate>
- <tr>
- <td>
- <asp:LinkButton ID="SelectButton" CommandName="Select" runat="server" Text="Details" />
- </td>
- <td>
- <%#Eval("ID") %>
- </td>
- <td>
- <asp:Label ID="idLabel" runat="server" Text='<%# Eval("name") %>' />
- </td>
- <td>
- <asp:Label ID="xLabel" runat="server" Text='<%# Eval("age") %>' />
- </td>
- </tr>
- </ItemTemplate>
- <SelectedItemTemplate>
- <tr><td>
- <asp:DetailsView ID="DetailsView1" runat="server" Height="50px" Width="125px">
- </asp:DetailsView></td></tr>
- </SelectedItemTemplate>
- </asp:ListView>
后臺代碼:
- public partial class ListView技巧_Code15 : System.Web.UI.Page
- {
- DataAccess da;
- protected void Page_Load(object sender, EventArgs e)
- {
- if (Session["da"] == null)
- {
- da = new DataAccess();
- Session["da"] = da;
- }
- else
- {
- da = Session["da"] as DataAccess;
- }
- if (!IsPostBack)
- {
- Bind();
- }
- }
- private void Bind()
- {
- ListView1.DataSource = da.List;
- ListView1.DataBind();
- }
- protected void ListView1_SelectedIndexChanging(object sender, ListViewSelectEventArgs e)
- {
- ListView1.SelectedIndex = e.NewSelectedIndex;
- Bind();
- DetailsView dv = ListView1.Items[e.NewSelectedIndex].FindControl("DetailsView1") as DetailsView;
- dv.DataSource = da.List;
- dv.DataBind();
- }
- }
8、內嵌GridView帶修改
前端代碼
- <asp:ListView ID="ListView1" runat="server"
- onselectedindexchanging="ListView1_SelectedIndexChanging">
- <LayoutTemplate>
- <table id="Table1" runat="server" border="0" style="">
- <tr runat="server" id="itemPlaceholder" />
- </table>
- </LayoutTemplate>
- <ItemTemplate>
- <tr>
- <td>
- <asp:LinkButton ID="SelectButton" CommandName="Select" runat="server" Text="選擇" />
- </td>
- <td>
- <%#Eval("ID") %>
- </td>
- <td>
- <asp:Label ID="idLabel" runat="server" Text='<%# Eval("name") %>' />
- </td>
- <td>
- <asp:Label ID="xLabel" runat="server" Text='<%# Eval("age") %>' />
- </td>
- </tr>
- </ItemTemplate>
- <SelectedItemTemplate>
- <tr>
- <td>
- <asp:GridView ID="GridView1" runat="server" AutoGenerateEditButton="true"
- OnRowEditing="GridView1_Editing" OnRowUpdating="GridView1_Updating"
- OnRowCancelingEdit="GridView1_CancelingEdit" AutoGenerateColumns="false">
- <Columns>
- <asp:BoundField DataField="ID" ReadOnly="true" />
- <asp:BoundField DataField="name" />
- <asp:BoundField DataField="Age" />
- </Columns>
- </asp:GridView>
- </td>
- </tr>
- </SelectedItemTemplate>
- </asp:ListView>
后臺代碼
- DataAccess da;
- protected void Page_Load(object sender, EventArgs e)
- {
- if (Session["da"] == null)
- {
- da = new DataAccess();
- Session["da"] = da;
- }
- else
- {
- da = Session["da"] as DataAccess;
- }
- if (!IsPostBack)
- {
- Bind();
- }
- }
- private void Bind()
- {
- ListView1.DataSource = da.List;
- ListView1.DataBind();
- }
- protected void ListView1_SelectedIndexChanging(object sender, ListViewSelectEventArgs e)
- {
- ListView1.SelectedIndex = e.NewSelectedIndex;
- Bind();
- ViewState["SelectedIndex"] = e.NewSelectedIndex;
- int selectIndex = (int)ViewState["SelectedIndex"];
- GridView gv = (GridView)ListView1.Items[selectIndex].FindControl("GridView1");
- gv.DataSource = da.List;
- gv.DataBind();
- }
- protected void GridView1_Editing(object sender, GridViewEditEventArgs e)
- {
- int selectIndex = (int)ViewState["SelectedIndex"];
- GridView gv = (GridView)ListView1.Items[selectIndex].FindControl("GridView1");
- gv.EditIndex = e.NewEditIndex;
- gv.DataSource = da.List;
- gv.DataBind();
- }
- protected void GridView1_Updating(object sender, GridViewUpdateEventArgs e)
- {
- int selectIndex = (int)ViewState["SelectedIndex"];
- GridView gv = (GridView)ListView1.Items[selectIndex].FindControl("GridView1");
- string id=gv.Rows[e.RowIndex].Cells[1].Text;
- string name= ((TextBox)gv.Rows[e.RowIndex].Cells[2].Controls[0]).Text;
- string Age= ((TextBox)gv.Rows[e.RowIndex].Cells[3].Controls[0]).Text;
- Employee employee = da.Find(Convert.ToInt32(id));
- employee.Name = name;
- employee.Age = Convert.ToInt32(Age);
- gv.EditIndex = -1;
- gv.DataSource = da.List;
- gv.DataBind();
- }
- protected void GridView1_CancelingEdit(object sender, GridViewCancelEditEventArgs e)
- {
- int selectIndex = (int)ViewState["SelectedIndex"];
- GridView gv = (GridView)ListView1.Items[selectIndex].FindControl("GridView1");
- gv.EditIndex = -1;
- gv.DataSource = da.List;
- gv.DataBind();
- }
模擬數據提供和前邊一樣這里就不貼了
聯(lián)系客服