7

我只知道如何填充 gridviewasp:SqlDataSource
但是我的 中有一个列,当TemplateFieldgridview需要修改我的 SQL 以更改网格内容时,我丢失了我的TemplateField,所以我想学习gridview用 C#填充我的
有人可以教我或给我一些教程吗?

4

3 回答 3

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

}
于 2013-04-20T05:24:27.753 回答
4

我刚刚创建了一个带有 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 [带分页]

希望这可以帮助。

于 2013-04-20T08:15:41.637 回答
1

template fieldin是一个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

于 2013-04-20T05:01:56.743 回答