ASP.NET Tutorial/ASP.net Controls/DataGrid
Содержание
- 1 asp:EditCommandColumn in asp:DataGrid (VB.net)
- 2 Bind data of directories to asp:DataGrid (VB.net)
- 3 Bind file information to asp:DataGrid (VB.net)
- 4 Binding DataReader to DataGrid
- 5 A RadioButtonList
- 6 A DropDownList
- 7 A ListBox
- 8 DataGrid Data Binding
- 9 Use asp:DataGrid to edit data in an Access table (VB.net)
- 10 Use asp:HyperlinkColumn and asp:ButtonColumn in asp:DataGrid (VB.net)
asp:EditCommandColumn in asp:DataGrid (VB.net)
<source lang="csharp">
<%@ Import Namespace="System.Data" %> <%@ Import Namespace="System.Data.OleDb" %> <html> <script language="VB" runat="server">
sub Page_Load(Sender as Object, e as EventArgs) dim myConnection as new OleDbConnection( _ "PROVIDER=Microsoft.Jet.OLEDB.4.0;" _ & "DATA SOURCE=" _ & Server.MapPath("EmployeeDatabase.mdb;")) dim myCommand as new OleDbDataAdapter _ ("select * from employee", myConnection) dim ds as DataSet = new DataSet() myCommand.Fill(ds, "employee") DataGrid1.DataSource = ds DataGrid1.DataMember = "employee" DataBind() end sub sub DataGrid1_Edit(Sender as Object, e as DataGridCommandEventArgs) DataGrid1.EditItemIndex = e.Item.ItemIndex DataGrid1.DataBind() end sub sub DataGrid1_Update(Sender as Object, e as DataGridCommandEventArgs) DataGrid1.DataBind() end sub sub DataGrid1_Cancel(Sender as Object, e as DataGridCommandEventArgs) DataGrid1.EditItemIndex = -1 DataGrid1.DataBind() end sub sub DataGrid1_SortCommand(Sender as Object, e as DataGridSortCommandEventArgs) DataGrid1.DataBind() End Sub sub DataGrid1_PageIndexChanged(Sender as Object, e as DataGridPageChangedEventArgs) DataGrid1.CurrentPageIndex = e.NewPageIndex DataGrid1.DataBind() end sub
</script> <body>
<form runat="server"> <asp:DataGrid id="DataGrid1" runat="server" BorderColor="black" GridLines="Vertical" cellpadding="4" cellspacing="0" width="450" Font-NameFont-Names="Arial" Font-Size="8pt" ShowFooter="True" HeaderStyle-BackColor="#cccc99" FooterStyle-BackColor="#cccc99" ItemStyle-BackColor="#ffffff" AlternatingItemStyle-Backcolor="#cccccc" AutoGenerateColumns="false" AllowSorting=true OnEditCommand="DataGrid1_Edit" OnCancelCommand="DataGrid1_Cancel" OnUpdateCommand="DataGrid1_Update" AllowPaging="True" PageSize=2 PagerStyle-Mode=NumericPages PagerStyle-PageButtonCount = 2 OnPageIndexChanged="DataGrid1_PageIndexChanged" > <Columns> <asp:TemplateColumn HeaderText="Name"> <ItemTemplate> <asp:Label id="Name" runat="server" Text="<%# Container.DataItem("FirstName")& _ " " & Container.DataItem("LastName") %>"/> </ItemTemplate> </asp:TemplateColumn> <asp:BoundColumn HeaderText="ID" DataField="ID"/> <asp:EditCommandColumn EditText="Edit" CancelText="Cancel" UpdateText="Update" ItemStyle-Wrap="false" HeaderText="Edit" /> </Columns> </asp:DataGrid> </form>
</body> </html></source>
Bind data of directories to asp:DataGrid (VB.net)
<source lang="csharp">
<%@ Import Namespace="System.IO" %> <script language="C#" runat="server">
void Page_Load(Object Sender, EventArgs e) { DirectoryInfo dir = new DirectoryInfo(Server.MapPath(".")); DataGrid2.DataSource = dir.GetDirectories(); DataGrid2.DataBind(); }
</script> <html><body>
Directory information
<asp:DataGrid id="DataGrid2" runat="server" AlternatingItemStyle-Backcolor="#cccccc" AutogenerateColumns="true" />
</body></html></source>
Bind file information to asp:DataGrid (VB.net)
<source lang="csharp">
<%@ Import Namespace="System.IO" %> <script language="C#" runat="server">
void Page_Load(Object Sender, EventArgs e) { DirectoryInfo dir = new DirectoryInfo(Server.MapPath(".")); DataGrid1.DataSource = dir.GetFiles("*.*"); DataGrid1.DataBind(); }
</script> <html><body>
File information
<asp:DataGrid id="DataGrid1" runat="server" AlternatingItemStyle-Backcolor="#cccccc" AutogenerateColumns="true" />
</body></html></source>
Binding DataReader to DataGrid
<source lang="csharp">
<%@ Page Language="C#" %> <%@ import Namespace="System.Data" %> <%@ import Namespace="System.Data.SqlClient" %> <script runat="server">
SqlDataReader myReader; void Page_Load(object sender, EventArgs e) { string ConnectionString = Convert.ToString(ConfigurationSettings.AppSettings["MSDEConnectString"]); SqlConnection myConnection = new SqlConnection(ConnectionString); SqlCommand myCommand = new SqlCommand(); myCommand.Connection = myConnection; try { myConnection.Open(); if (!(Page.IsPostBack)) { myCommand.rumandText = "SELECT PublisherID, PublisherName FROM Publisher"; myReader = myCommand.ExecuteReader(); ListBox1.DataBind(); myReader.Close(); } else { myCommand.rumandText = "SELECT * FROM Book WHERE BookPublisherID=" + ListBox1.SelectedItem.Value; myReader = myCommand.ExecuteReader(); DataGrid1.DataSource = myReader; DataGrid1.DataBind(); myReader.Close(); } } catch (Exception ex) { throw (ex); } finally { myConnection.Close(); } }
</script> <html> <head> </head> <body>
<form runat="server">
A RadioButtonList
<asp:RadioButtonList id="RadioButtonList1" runat="server" AutoPostBack="True" DataValueField="PublisherID" DataTextField="PublisherName" DataSource="<%# myReader %>"></asp:RadioButtonList>
A DropDownList
<asp:DropDownList id="DropDownList1" runat="server" AutoPostBack="True" DataValueField="PublisherID" DataTextField="PublisherName" DataSource="<%# myReader %>"></asp:DropDownList>
A ListBox
<asp:ListBox id="ListBox1" runat="server" AutoPostBack="True" DataValueField="PublisherID" DataTextField="PublisherName" DataSource="<%# myReader %>" Rows="5"></asp:ListBox> <asp:Label id="Label1" runat="server"></asp:Label> <asp:DataGrid id="DataGrid1" runat="server" HorizontalAlign="Justify" BorderColor="#CC9966" BackColor="White" CellPadding="4" BorderWidth="1px" BorderStyle="None"> <FooterStyle forecolor="#330099" backcolor="#FFFFCC"></FooterStyle> <HeaderStyle font-bold="True" forecolor="#FFFFCC" backcolor="#990000"></HeaderStyle> <PagerStyle horizontalalign="Center" forecolor="#330099" backcolor="#FFFFCC"></PagerStyle> <SelectedItemStyle font-bold="True" forecolor="#663399" backcolor="#FFCC66"></SelectedItemStyle> <ItemStyle forecolor="#330099" backcolor="White"></ItemStyle> </asp:DataGrid> </form>
</body> </html>
File: Web.config
<configuration>
<appSettings> <add key="MSDEConnectString" value="server=(local)\YourDatabase;database=Books;uid=YourID;pwd=letmein;" /> </appSettings>
</configuration></source>
DataGrid Data Binding
<source lang="csharp">
<%@ Page Language="VB" %> <%@ Import Namespace="System.Data" %> <%@ Import Namespace="System.Data.OleDb" %> <script runat="server">
"declare connection dim Conn as new OleDbConnection( _ "PROVIDER=Microsoft.Jet.OLEDB.4.0;" _ & "DATA SOURCE=" _ & Server.MapPath("EmployeeDatabase.mdb;")) sub GetData(Sender as Object, e as EventArgs) dim objCmd as OleDbCommand = new OleDbCommand _ ("select * from employee where ID = @ID", Conn) dim objReader as OleDbDataReader dim objParam as OleDbParameter objParam = objCmd.Parameters.Add("@ID", OleDbType.Integer) objParam.Direction = ParameterDirection.Input objParam.Value = tbID.Text try objCmd.Connection.Open() objReader = objCmd.ExecuteReader dgData.DataSource = objReader dgData.DataBind() objReader.Close objCmd.Connection.Close() catch objEx as FormatException lblMessage.Text = objEx.Message catch objEx as OleDbException lblMessage.Text = "Database error!" catch objEx as Exception lblMessage.Text = "Unknown error!" end try end sub
</script> <html><body>
<form runat="server"> <asp:Label id="lblMessage" runat="server" maintainstate=false />
Enter an ID: <asp:TextBox id="tbID" runat="server" AutoPostBack=True OnTextChanged=GetData /> <asp:DataGrid id="dgData" runat="server" BorderColor="black" GridLines="Vertical" width="100%" Font-Name="Arial" Font-Size="8pt" HeaderStyle-BackColor="#cccc99" ItemStyle-BackColor="#ffffff" AlternatingItemStyle-Backcolor="#cccccc" AutoGenerateColumns="true" /> </form>
</body></html></source>
Use asp:DataGrid to edit data in an Access table (VB.net)
<source lang="csharp">
<%@ Import Namespace="System.Data" %> <%@ Import Namespace="System.Data.OleDb" %> <html> <script language="VB" runat="server">
sub Page_Load(Sender as Object, e as EventArgs) dim myConnection as new OleDbConnection( _ "PROVIDER=Microsoft.Jet.OLEDB.4.0;" _ & "DATA SOURCE=" _ & Server.MapPath("EmployeeDatabase.mdb;")) dim myCommand as new OleDbDataAdapter("select * from employee", myConnection) dim ds as DataSet = new DataSet() myCommand.Fill(ds, "employee") DataGrid1.DataSource = ds.Tables("employee").DefaultView DataBind() end sub sub DataGrid1_ItemCommand(obj as object, e as _ DataGridCommandEventArgs) DataGrid1.SelectedIndex = e.Item.ItemIndex DataBind() end sub
</script> <body>
<form runat="server"> <asp:DataGrid id="DataGrid1" runat="server" BorderColor="black" GridLines="Vertical" cellpadding="4" cellspacing="0" width="450" Font-NameFont-Names="Arial" Font-Size="8pt" ShowFooter="True" HeaderStyle-BackColor="#cccc99" FooterStyle-BackColor="#cccc99" ItemStyle-BackColor="#ffffff" AlternatingItemStyle-Backcolor="#cccccc" AutoGenerateColumns="false"> <Columns> <asp:TemplateColumn HeaderText="Name"> <ItemTemplate> <asp:Label id="Name" runat="server" Text="<%# Container.DataItem("FirstName")& _ " " & Container.DataItem("LastName") %>"/> </ItemTemplate> </asp:TemplateColumn> <asp:BoundColumn HeaderText="ID" DataField="ID"/> <asp:HyperlinkColumn HeaderText="Edit" text="Edit" NavigateURL="edit.aspx"/> <asp:ButtonColumn HeaderText="Delete?" text="X" CommandName="delete" ButtonType="PushButton"/> </Columns> </asp:DataGrid> </form>
</body> </html></source>
Use asp:HyperlinkColumn and asp:ButtonColumn in asp:DataGrid (VB.net)
<source lang="csharp">
<%@ Import Namespace="System.Data" %> <%@ Import Namespace="System.Data.OleDb" %> <html> <script language="VB" runat="server">
sub Page_Load(Sender as Object, e as EventArgs) dim myConnection as new OleDbConnection( _ "PROVIDER=Microsoft.Jet.OLEDB.4.0;" _ & "DATA SOURCE=" _ & Server.MapPath("EmployeeDatabase.mdb;")) dim myCommand as new OleDbDataAdapter("select * from employee", myConnection) dim ds as DataSet = new DataSet() myCommand.Fill(ds, "employee") DataGrid1.DataSource = ds.Tables("employee").DefaultView DataBind() end sub sub DataGrid1_ItemCommand(obj as object, e as _ DataGridCommandEventArgs) DataGrid1.SelectedIndex = e.Item.ItemIndex DataBind() end sub
</script> <body>
<form runat="server"> <asp:DataGrid id="DataGrid1" runat="server" BorderColor="black" GridLines="Vertical" cellpadding="4" cellspacing="0" width="450" Font-NameFont-Names="Arial" Font-Size="8pt" ShowFooter="True" HeaderStyle-BackColor="#cccc99" FooterStyle-BackColor="#cccc99" ItemStyle-BackColor="#ffffff" AlternatingItemStyle-Backcolor="#cccccc" AutoGenerateColumns="false"> <Columns> <asp:TemplateColumn HeaderText="Name"> <ItemTemplate> <asp:Label id="Name" runat="server" Text="<%# Container.DataItem("FirstName")& _ " " & Container.DataItem("LastName") %>"/> </ItemTemplate> </asp:TemplateColumn> <asp:BoundColumn HeaderText="ID" DataField="ID"/> <asp:HyperlinkColumn HeaderText="Edit" text="Edit" NavigateURL="edit.aspx"/> <asp:ButtonColumn HeaderText="Delete?" text="X" CommandName="delete" ButtonType="PushButton"/> </Columns> </asp:DataGrid> </form>
</body> </html></source>