我只知道如何填充 gridviewasp:SqlDataSource
但是我的 中有一个列,当TemplateField
我gridview
需要修改我的 SQL 以更改网格内容时,我丢失了我的TemplateField
,所以我想学习gridview
用 C#填充我的
有人可以教我或给我一些教程吗?
3 回答
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using MySql.Data.Common;
using MySql.Data.MySqlClient;
using System.Data.SqlClient;
using System.Windows.Forms;
using System.Data;
public partial class viewAdmin : System.Web.UI.Page
{
String MyConString = "SERVER=localhost;" +
"DATABASE=databasename;" +
"UID=root;" +
"PASSWORD=;";
protected void Page_Load(object sender, EventArgs e)
{
MySqlConnection conn = new MySqlConnection(MyConString);
MySqlCommand cmd = new MySqlCommand("SELECT * FROM tablename;", conn);
conn.Open();
DataTable dataTable = new DataTable();
MySqlDataAdapter da = new MySqlDataAdapter(cmd);
da.Fill(dataTable);
GridVIew.DataSource = dataTable;
GridVIew.DataBind();
}
}
我刚刚创建了一个带有 SqlDataSource 的基本页面,它可以完成您想做的所有事情。
这就是我所做的。将 SqlDataSource 从工具箱拖到设计视图中的页面上。单击智能标记并配置数据源。单击新建连接。如果您正在使用本地安装的 MySql,那么服务器名称很可能是 localhost,用户名是 root,密码是您在计算机上安装和配置 MySql 服务器时指定的任何内容。选择您的数据库。单击此处的测试连接按钮以确保其正常工作总是一个好主意。现在,浏览向导的其余部分(下一步,下一步)。当您进入“配置选择语句”页面时,在指定要查询的表和字段后,请确保单击右侧的高级按钮,然后单击生成插入、更新和删除语句。
此时,您需要转到源视图。对我来说,生成的语句不是正确的 MySql 语法,所以你必须修复它们。最简单的方法是在源视图中进行查找/替换并将所有“[”和“]”替换为“`”。请记住,这不是撇号。它是键盘顶部数字行中 1 左侧的另一个外观相似的字符(我不知道你怎么称呼它)。您还需要在插入、更新和删除语句中的“?”之后添加实际字段名称,以使参数正常工作。
好的,现在回到您的设计视图,将 GridView 控件拖到您的页面上,在 GridView 的智能标记中,选择选择数据源并选择您刚刚创建的页面上的数据源(可能称为 SqlDataSource1,除非您更改了创建时的名称)。点击刷新架构。如果它正常工作,它可能会给您一些确认框,但之后,它应该刷新您的 GridView 并显示数据源中的列。再次单击 GridView 中的智能标记,然后单击启用分页、排序、编辑、删除旁边的复选框(无论您想要什么)。现在保存页面并运行它。您应该看到一个 GridView 能够执行所有这些操作。
对于插入,您需要不同的控件。DetailsView 控件可能是您最好的选择。这些步骤几乎与您对 GridView 所做的相同。
这是我做完所有这些后的源代码:
<%@ Page Language="C#" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
</script>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>Untitled Page</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:SqlDataSource ID="SqlDataSource1" runat="server"
ConnectionString="<%$ ConnectionStrings:testConnectionString2 %>"
DeleteCommand="DELETE FROM `test` WHERE `TestID` = ?TestID"
InsertCommand="INSERT INTO `test` (`TestID`, `FirstName`, `LastName`) VALUES (?TestID, ?FirstName, ?LastName)"
ProviderName="<%$ ConnectionStrings:testConnectionString2.ProviderName %>"
SelectCommand="SELECT * FROM `test`"
UpdateCommand="UPDATE `test` SET `FirstName` = ?FirstName, `LastName` = ?LastName WHERE `TestID` = ?TestID">
<DeleteParameters>
<asp:Parameter Name="TestID" Type="Int32" />
</DeleteParameters>
<UpdateParameters>
<asp:Parameter Name="FirstName" Type="String" />
<asp:Parameter Name="LastName" Type="String" />
<asp:Parameter Name="TestID" Type="Int32" />
</UpdateParameters>
<InsertParameters>
<asp:Parameter Name="TestID" Type="Int32" />
<asp:Parameter Name="FirstName" Type="String" />
<asp:Parameter Name="LastName" Type="String" />
</InsertParameters>
</asp:SqlDataSource>
</div>
<asp:GridView ID="GridView1" runat="server" AllowPaging="True"
AllowSorting="True" AutoGenerateColumns="False"
DataKeyNames="TestID" DataSourceID="SqlDataSource1">
<Columns>
<asp:CommandField ShowDeleteButton="True" ShowEditButton="True" />
<asp:BoundField DataField="TestID" HeaderText="TestID" ReadOnly="True" SortExpression="TestID" />
<asp:BoundField DataField="FirstName" HeaderText="FirstName" SortExpression="FirstName" />
<asp:BoundField DataField="LastName" HeaderText="LastName" SortExpression="LastName" />
</Columns>
</asp:GridView>
<asp:DetailsView ID="DetailsView1" runat="server" AutoGenerateRows="False" DataKeyNames="TestID"
DataSourceID="SqlDataSource1" Height="50px" Width="125px">
<Fields>
<asp:BoundField DataField="FirstName" HeaderText="FirstName" SortExpression="FirstName" />
<asp:BoundField DataField="LastName" HeaderText="LastName" SortExpression="LastName" />
<asp:CommandField ShowDeleteButton="True" ShowEditButton="True" ShowInsertButton="True" />
</Fields>
</asp:DetailsView>
</form>
</body>
</html>
所有这一切都假设您按照上述步骤在您的 web.config 文件中为您创建一个连接字符串。因此,您将无法逐字复制此代码并使其正常工作。无论如何,您的 web.config 中都没有连接字符串。
你可以做的还有很多。这个网站上有很多关于使用不同数据控件的精彩文章和视频。部署到生产环境时还需要考虑一些事项。如果有帮助,我使用 GoDaddy 并在上个月写了一篇关于使用 MySql 设置 ASP.NET 成员资格并在 GoDaddy 上托管的文章。我认为那篇文章的第一部分可能会给你一些额外的有用提示,具体取决于你最终想要做什么。
那篇文章在这里:
检查dis链接你可以肯定地解决问题............
http://aspnet.4guysfromrolla.com/articles/021203-1.aspx [无分页]
http://www.aspnetdatagrid.com/Ex/RowInUpDl.aspx [带分页]
希望这可以帮助。
template field
in是一个gridview
字段,其中包含您从数据源中的数据库中选择的值之一。
<asp:TemplateField HeaderText="FirstName" SortExpression="FirstName">
<EditItemTemplate>
<asp:TextBox ID="TextBox1" runat="server" Text='<%# Bind("FirstName") %>'>
</asp:TextBox>
</EditItemTemplate>
<ItemTemplate>
<asp:Label ID="Label1" runat="server" Text='<%# Bind("FirstName") %>'>
</asp:Label>
<asp:Label ID="Label2" runat="server" Text='<%# Bind("LastName") %>'>
</asp:Label>
</ItemTemplate>
</asp:TemplateField>
有项目的模板以及编辑项目。
当 gridview 不处于编辑模式时显示项目模板。
编辑项目模板在编辑模式下显示。
更多详细信息:- http://msdn.microsoft.com/en-us/library/bb288031.aspx