2013-04-20 37 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 [與分頁]

希望這有助於。