亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > .NET > 正文

ASP.NET 2.0/3.5中直接操作Gridview控件插入新記錄

2024-07-10 13:21:17
字體:
來源:轉載
供稿:網友
一、簡介
從ASP.NET 2.0起引入了一批新的功能強大的視圖控件,例如Gridview、FormView和DetailsView等等。通過和數據源控件的簡單結合,在許多情況下,僅需要簡單的配置方式就可以開發出功能強大的應用程序。但遺憾的是,Gridview控件中并沒有提供像在FormView和DetailsView控件中那樣直接插入新記錄操作的支持。圖1給出了典型的使用控件展示數據庫數據的情形。

ASP.NET 2.0/3.5中直接操作Gridview控件插入新記錄

圖1 使用GridView控件展示VS2005示例數據庫Address表格中的數據
熟悉Gridview控件使用的朋友都知道,圖1中一切都齊了,只差一個Insert操作的默認支持。我現在使用的是ASP.NET 3.5,結果一樣,仍然沒有直接提供對于插入操作的配置支持。
二、解決方案
其實,答案還是有的,這要求對于Gridview控件有更進一步的了解。我們知道Gridview為方便開發人員定制編程提供了大量的模板支持。根據插入操作的一般實現界面,我們可以利用Gridview的footer的模版功能,實現在Gridview控件的最后一行,提供一個空白行給用戶輸入要輸入的記錄,從而間接地實現Gridview控件對于插入操作的支持。

三、實例展示
(一)創建示例網站并建立數據庫關聯
啟動Visual Studio 2005/2008并選擇“ASP.NET Web Site”模板新創建一個示例網站GridViewExt。在默認頁面Default.aspx中拖入一個GridView控件。然后,點擊GridView控件右上角的智能感知提示按鈕,為此控件配置一個SqlDataSource類型的數據源控件SqlDataSource1。并且,通過簡單的向導配置之后,使數據源控件SqlDataSource1創建與示例數據庫Depart.mdf的關聯,并進一步關聯到其中的DepartInfo表格上。
【提示】為了簡化起見,示例數據庫Depart.mdf中僅包含了一個表格DepartInfo,而且其架構也十分簡單(其中字段DepartID為主關鍵字),如下圖2所示:


最后生成的數據源控件SqlDataSource1配置參數(經一定修改)如下所示:
<asp:SqlDataSource runat="[url=javascript:;]server[/url]"
           ConnectionString="<%$ ConnectionStrings:DepartConnectionString %>"
           SelectCommand="SELECT DepartID, DepartName FROM DepartInfo"
           DeleteCommand="Delete from DepartInfo where DepartID=@DepartID"
           InsertC
       >
        <DeleteParameters>
           <asp:Parameter Type="Int32" />
        </DeleteParameters>  
      <InsertParameters>
           <asp:Parameter Type="Int32" />
           <asp:Parameter Type="String" />
       </InsertParameters>        

</asp:SqlDataSource>
(二)修改頁面Default.aspx布局
我們的打算是,在讓用戶進行選擇,當用戶需要新增一記錄時,便點擊“添加”按鈕,之后在Gridview的最后一行里,顯示一個空白行,讓用戶按字段進行輸入。當用戶決定不輸入新空白記錄時,可以按"隱藏"按鈕返回,該空白行消失。
要實現以上目的,我們可以充分利用Gridview的footer的模版功能進行自定義,因為表格中僅有一個可編輯列DepartName;所以,我們只需要在此列的footer模版中,定義如下(注意其中加粗部分):
<asp:Button runat="Server" Text="添加新記錄" nclick="outAdd_Click" />
<asp:GridView runat="server" AllowPaging="True"
   AllowSorting="True" AutoGenerateColumns="False" CellPadding="4"ShowFooter =" false"
   DataSourceID="SqlDataSource1" ForeColor="#333333" GridLines="None"DataKeyNames="DepartID">
   <FooterStyle. BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
   <RowStyle. BackC0" numbertype="1" negative="False" hasspace="False" sourcevalue="7" unitname="F" w:st="on">7F6F3" ForeColor="#333333" />
   <Columns>
       <asp:TemplateField ShowHeader="False">
           <EditItemTemplate>
               <asp:LinkButton runat="server" CausesValidation="True"
                   CommandName="Update" Text="Update"></asp:LinkButton>
                <asp:LinkButton runat="server" CausesValidation="False"
                   CommandName="Cancel" Text="Cancel"></asp:LinkButton>
           </EditItemTemplate>
           <ItemTemplate>
               <asp:LinkButton runat="server" CausesValidation="False"
                   CommandName="Edit" Text="Edit"></asp:LinkButton>
           </ItemTemplate>
           <FooterTemplate>
               <asp:Button Runat="server" Text="Add" nClick="btnAdd_Click" />  
               <asp:Button Runat="server" Text="Hide" nClick="btnCancel_Click" />
           </FooterTemplate>
       </asp:TemplateField>
       <asp:TemplateField ShowHeader="False">
           <ItemTemplate>
               <asp:LinkButton runat="server" CausesValidation="False"
                   CommandName="Select" Text="Select"></asp:LinkButton>
           </ItemTemplate>
           <ItemTemplate>
               <asp:LinkButton runat="server" CausesValidation="true"
                   CommandName="Delete" Text="Delete"></asp:LinkButton>
           </ItemTemplate>
       </asp:TemplateField>
       <asp:BoundField DataField="DepartID" HeaderText="DepartID"
           InsertVisible="False" ReadOnly="True" SortExpression="DepartID" />
       <asp:TemplateField HeaderText="DepartName" SortExpression="DepartName">
           <EditItemTemplate>
               <asp:TextBox runat="server" Text='<%# Bind("DepartName") %>'></asp:TextBox>
           </EditItemTemplate>
           <ItemTemplate>
               <asp:Label runat="server" Text='<%# Bind("DepartName") %>'></asp:Label>
           </ItemTemplate>
            <FooterTemplate>
               <asp:TextBox Runat="server"></asp:TextBox> 
           </FooterTemplate>
       </asp:TemplateField>
   </Columns>
   <PagerStyle. BackColor="#284775" ForeColor="White" HorizontalAlign="Center" />
   <SelectedRowStyle. BackColor="#E2DED6" Font-Bold="True" ForeColor="#333333" />
   <HeaderStyle. BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
   <EditRowStyle. BackColor="#999999" />
   <AlternatingRowStyle. BackColor="White" ForeColor="#284775" />
</asp:GridView>
首先注意的是,在Gridview控件之前添加了一個ASP.NET按鈕“outAdd”,用于控件是否顯示Gridview控件的<foottemplate>模板內容。顯然,在頁面啟動開始時這個模板是隱藏的。因此,這個按鈕的Click事件代碼(位于文件Default.aspx.cx中)相當簡單,如下所示:
protected void outAdd_Click(object sender, EventArgs e)
{
   GridView1.ShowFooter = true;

}
接下來是Gridview的有關的標記代碼??梢钥吹剑贒epartName列的<foottemplate>中提供了DepartNameBox文本框以供用戶輸入(因為本例中的這個字段僅是簡單的文本字段,對于其它類型字段的情況,需要創建相應的ASP.NET控件進行操作)。
另外,請注意在第一列的<FooterTemplate>中我們添加了Add和Hide兩個按鈕,它們的事件代碼如下:
<script. runat="server">
void btnCancel_Click(object sender, EventArgs e)
{
   GridView1.ShowFooter = false;
}

void btnAdd_Click(object sender, EventArgs e)
{
   TextBox t1 = GridView1.FooterRow.FindControl("DepartNameBox") as TextBox;

   SqlDataSource1.InsertParameters["DepartName"].DefaultValue = t1.Text;

   SqlDataSource1.Insert();

}
其中的Hide按鈕的事件,用來取消顯示Gridview的footer模版,因此設置showfooter屬性為false,而通過點擊按鈕Add則可以將新增的記錄插入(添加)到數據庫表格中去。
而Add按鈕,是當用戶決定新增記錄時點選的,此時將設置showfooter屬性為true,以顯示各列的foottemplate,從而達到顯示新的一個空白行的目的。
特別值得注意的是,在這里你必須以內聯方式把按鈕“Add”與“Hide”的Click事件處理器函數放置于ASPX文件之中,而不能放到代碼文件Default.aspx.cs中;否則,會出現如圖3所示的編譯錯誤。

ASP.NET 2.0/3.5中直接操作Gridview控件插入新記錄


圖3 把按鈕“Add”與“Hide”的Click事件處理器函數放置于代碼文件Default.aspx.cs中導致的編譯錯誤提示另外,在GridView1的屬性聲明中必須指定DataKeyNames="DepartID";否則,在運行時如果點擊“Delete”或“Update”鏈接會出現“經典”的錯誤提示,如圖4所示。

ASP.NET 2.0/3.5中直接操作Gridview控件插入新記錄


圖4 未指定GridView的DataKeyNames導致的錯誤提示四、觀察運行結果
按F5運行上面的示例頁面DEFAULT.ASPX,一切順利的話,你會觀察到如圖5所示的初始快照。

ASP.NET 2.0/3.5中直接操作Gridview控件插入新記錄


圖5 示例頁面初始快照然后,點擊“添加新記錄”按鈕,將出現如圖6所示快照。

ASP.NET 2.0/3.5中直接操作Gridview控件插入新記錄



圖6 為GRIDVIEW控件添加“插入”功能的運行示例快照
很顯然,在輸入部門名稱后點擊“Add”可以把新的部門加入到數據庫表格中,而點擊“Hide”按鈕則可以隱藏這個頁腳的顯示。
五、小結
ASP.NET 2.0引入的Gridview控件功能相當強大,但是也存在一定的不足。本文中展示的僅僅是其中之一,而且也僅展示了為Gridview控件提示插入功能的一種方法。
最后注意,雖然本文示例右VS2008下調試通過,但根據我的經驗,在VS2005的ASP.NET 2.0環境下也應該沒有問題。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品高清网站| 亚洲天堂第二页| 欧美区在线播放| 国产一区视频在线播放| 欧美精品一区二区免费| 国产综合在线看| 91夜夜揉人人捏人人添红杏| 欧美视频在线视频| 亚洲欧洲xxxx| 97人人爽人人喊人人模波多| 97免费视频在线播放| 黑人巨大精品欧美一区二区一视频| yw.139尤物在线精品视频| 性欧美激情精品| 欧美人交a欧美精品| 亚洲一区二区免费在线| 欧美成人国产va精品日本一级| 欧美插天视频在线播放| 亚洲情综合五月天| 国产精品美女主播| 国产精品av在线播放| 欧美日韩xxx| 国产精品久久激情| 欧美成人久久久| 91视频国产一区| 久久久精品日本| 国产精品成人免费电影| 色与欲影视天天看综合网| 日本午夜精品理论片a级appf发布| 久久精品电影网| 亚洲精品久久久久中文字幕欢迎你| 亚洲r级在线观看| 亚洲精品日韩av| 精品性高朝久久久久久久| 欧美专区在线播放| 国产综合福利在线| 美日韩在线视频| 亚洲激情国产精品| 欧美日韩免费在线| 亚洲天堂色网站| 亚洲国产小视频| 久久久亚洲影院| 中文字幕精品一区二区精品| 91精品视频网站| 精品成人av一区| 久久男人av资源网站| 性欧美暴力猛交69hd| 欧亚精品中文字幕| 欧美日韩在线免费观看| 欧美成人免费全部观看天天性色| 成人精品在线观看| 欧美重口另类videos人妖| 欧美成人一二三| 日韩激情视频在线播放| 高清欧美性猛交xxxx| 久久久这里只有精品视频| 久久男人av资源网站| 亚洲第一视频在线观看| 亚洲精品美女视频| 亚洲理论片在线观看| 久久精品色欧美aⅴ一区二区| www.亚洲免费视频| 日韩精品中文字幕在线播放| 68精品久久久久久欧美| 国产日韩在线播放| 91精品国产91久久久久久吃药| 中文字幕亚洲综合| 久久久精品国产一区二区| 日韩av中文字幕在线| 欧美乱大交xxxxx| 91av福利视频| 俺去啦;欧美日韩| 91精品久久久久久久久久入口| 欧美激情中文字幕乱码免费| 精品国产乱码久久久久久婷婷| 亚洲欧美日韩国产中文专区| 国产婷婷成人久久av免费高清| 午夜精品久久久99热福利| 亚洲最大福利视频网站| 欧美日韩加勒比精品一区| 性日韩欧美在线视频| 美女av一区二区三区| 久久久精品一区二区| 欧美黑人国产人伦爽爽爽| 国产精品欧美风情| 国产精品va在线播放| 欧美理论电影在线观看| 91久久精品国产91久久| 在线亚洲国产精品网| 高清视频欧美一级| 爱福利视频一区| 日韩在线观看成人| 国产精品国内视频| 欧美日韩福利在线观看| 色悠悠久久久久| 中文字幕日韩在线播放| 97在线免费观看| 黄色成人av网| 欧美精品久久久久久久免费观看| 亚洲一区二区在线播放| 欧美成人精品在线| 亚洲成人网av| 91成人性视频| 色诱女教师一区二区三区| 国产精品久久久久久久久久小说| 久久久国产91| 欧美性生活大片免费观看网址| 日韩av手机在线| 91丨九色丨国产在线| 久久久久久999| 国产欧美日韩免费| 欧美亚洲在线视频| 日韩高清欧美高清| 国产综合在线看| 亚洲国产精品99久久| 欧美一级淫片丝袜脚交| 国产欧美在线播放| 亚洲国产精品久久久久久| 日韩一级黄色av| 日韩美女视频在线观看| 久久精品在线播放| 国产一区二区在线播放| 奇米一区二区三区四区久久| 中文一区二区视频| 国产一区二区三区丝袜| 日韩av资源在线播放| 欧美一级片久久久久久久| 欧美激情在线一区| 国产精品日韩久久久久| 欧美日韩久久久久| 精品亚洲va在线va天堂资源站| 91精品国产91久久久久久| 精品国产一区av| 综合av色偷偷网| 91久久在线观看| 国产一区二区三区免费视频| 成人av.网址在线网站| 国产一区二区三区视频在线观看| 日本久久久久亚洲中字幕| www.日韩视频| 久久噜噜噜精品国产亚洲综合| 国内精品久久久久久中文字幕| 欧美性色xo影院| 最新亚洲国产精品| 成人免费黄色网| 亚洲欧美国产另类| 日本一区二区三区在线播放| 国外成人在线直播| 欧美丰满少妇xxxx| 亚洲精品国产精品自产a区红杏吧| 日韩成人在线视频观看| 成人免费视频xnxx.com| 久久精品一偷一偷国产| 国产精品第一第二| 91老司机精品视频| 亚洲va国产va天堂va久久| 福利二区91精品bt7086| 国产精品久久久久久久久免费看| 自拍偷拍免费精品| 亚洲精品999| 亚洲已满18点击进入在线看片| 欧美国产精品va在线观看| 国产精品丝袜久久久久久高清| 亚洲风情亚aⅴ在线发布|