我只知道如何使用asp:SqlDataSource
填充gridview
但是我的TemplateField
中有一列gridview
,当我需要修改我的SQL for alter grid content时,我丢失了TemplateField
,所以我认为学习填充gridview
用C#
有人可以教我或给我一些教程吗?
答案 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文章。我认为该文章的第一部分可能会给你一些额外的有用提示,具体取决于你最终要做的事情。
那篇文章在这里:
检查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