如何用mysql填充gridview?

时间:2013-04-20 02:42:23

标签: c# asp.net mysql gridview

我只知道如何使用asp:SqlDataSource填充gridview 但是我的TemplateField中有一列gridview,当我需要修改我的SQL for alter grid content时,我丢失了TemplateField,所以我认为学习填充gridview用C#
有人可以教我或给我一些教程吗?

3 个答案:

答案 0 :(得分:9)

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();
}

}

答案 1 :(得分:3)

我刚刚创建了一个带有SqlDataSource的基本页面,它可以完成您想要做的所有事情。

这就是我的所作所为。在“设计”视图中将SqlDataSource从“工具箱”拖到页面上。单击智能标记并配置数据源。单击“新连接”。如果您正在使用MySql的本地安装,则很可能服务器名称是localhost,用户名是root,密码是您在计算机上安装和配置MySql服务器时指定的密码。选择你的数据库。总是一个好主意点击这里的测试连接按钮,以确保它正常工作。现在,完成向导的其余部分(下一步,下一步)。当您进入“配置Select语句”页面时,在指定要查询的表以及哪些字段后,请确保单击右侧的高级按钮并单击生成插入,更新和删除语句。现在完成向导。

此时,您需要转到源视图。对我来说,生成的语句不是正确的MySql语法,所以你必须修复它们。最简单的是在源视图中进行查找/替换,并将所有“[”和“]”替换为“`”。请记住,这不是撇号。它是键盘顶部数字行1左侧的另一个相似的字符(我不知道你叫它)。您还需要在insert,update和delete语句中的“?”之后添加实际字段名称,以使参数正常工作。

好的,现在返回到您的设计视图,将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文件中创建连接字符串。因此,您将无法复制此代码verbatum并使其正常工作。无论如何,你的web.config中都没有连接字符串。

你可以做更多的事情。本网站上有很多关于使用不同数据控件的精彩文章和视频。部署到生产时还需要考虑一些事项。如果它有所帮助,我上个月写了一篇关于使用MySql设置ASP.NET成员资格并在GoDaddy上托管的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 [有分页]

希望这会有所帮助。

答案 2 :(得分:1)

template field中的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

相关问题