如何用mysql填充gridview?
Posted
技术标签:
【中文标题】如何用mysql填充gridview?【英文标题】:How to populate gridview with mysql? 【发布时间】:2013-04-13 12:25:31 【问题描述】:我只知道如何用asp:SqlDataSource
填充gridview
但是我的gridview
中有一个TemplateField
列,当我需要修改我的SQL 以更改网格内容时,我丢失了我的TemplateField
,所以我想学习用C# 填充我的gridview
有人可以教我或给我一些教程吗?
【问题讨论】:
您的问题不清楚,能否贴出示例代码和您的尝试? 【参考方案1】: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();
【讨论】:
感谢大家!你都帮了我!主要是扯蛋!这是我需要的吗【参考方案2】:我刚刚创建了一个带有 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 上托管的文章。我认为那篇文章的第一部分可能会给你一些额外的有用提示,具体取决于你最终想要做什么。
那篇文章在这里:
http://www.marvinpalmer.com/MarvinPalmer/post/Implement-NET-Membership-and-Roles-using-MySql-Connector-523-on-GoDaddy.aspx
检查dis链接你可以明确地解决问题............
http://aspnet.4guysfromrolla.com/articles/021203-1.aspx [不分页]
http://www.aspnetdatagrid.com/Ex/RowInUpDl.aspx [带分页]
希望这会有所帮助。
【讨论】:
【参考方案3】:gridview
中的 template field
是一个字段,其中包含您从数据源中的数据库中选择的值之一。
<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
【讨论】:
以上是关于如何用mysql填充gridview?的主要内容,如果未能解决你的问题,请参考以下文章