2013-04-20 84 views
6

我只知道如何填充GridView控件与asp:SqlDataSource
但我的TemplateField列在我的gridview,当我需要修改我的SQL的ALTER格的内容,我失去了我TemplateField,所以我觉得学习填充我gridview用C#
有人可以教我或给我一些教程?如何使用mysql填充gridview?

+4

你的问题不清楚,你可以发布示例代码,你试过什么? – 2013-04-20 03:27:24

回答

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

} 
+0

Tks给大家! 所有你帮助我!主要是Chetan!这是我需要的吗? – Lai32290 2013-04-20 23:07:04

1

A 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

3

我刚刚创建了一个基本的页面,做所有你想要做一个SqlDataSource。

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

在这一点上,你需要去源视图。对我来说,生成的语句不正确的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文件中创建一个连接字符串的步骤。所以你将无法复制此代码verbatum并使其工作。无论如何,在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链接ü可以definetly解决问题........

http://aspnet.4guysfromrolla.com/articles/021203-1.aspx [用了分页]

http://www.aspnetdatagrid.com/Ex/RowInUpDl.aspx [与分页]

希望这有助于。