天天躁日日躁狠狠躁AV麻豆-天天躁人人躁人人躁狂躁-天天澡夜夜澡人人澡-天天影视香色欲综合网-国产成人女人在线视频观看-国产成人女人视频在线观看

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

一、簡介
ASP.NET 2.0起引入了一批新的功能強(qiáng)大的視圖控件,例如Gridview、FormView和DetailsView等等。通過和數(shù)據(jù)源控件的簡單結(jié)合,在許多情況下,僅需要簡單的配置方式就可以開發(fā)出功能強(qiáng)大的應(yīng)用程序。但遺憾的是,Gridview控件中并沒有提供像在FormView和DetailsView控件中那樣直接插入新記錄操作的支持。圖1給出了典型的使用控件展示數(shù)據(jù)庫數(shù)據(jù)的情形。
圖1 使用GridView控件展示VS2005示例數(shù)據(jù)庫Address表格中的數(shù)據(jù)

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

三、實(shí)例展示
(一)創(chuàng)建示例網(wǎng)站并建立數(shù)據(jù)庫關(guān)聯(lián)
啟動Visual Studio 2005/2008并選擇“ASP.NET Web Site”模板新創(chuàng)建一個示例網(wǎng)站GridViewExt。在默認(rèn)頁面Default.ASPx中拖入一個GridView控件。然后,點(diǎn)擊GridView控件右上角的智能感知提示按鈕,為此控件配置一個SqlDataSource類型的數(shù)據(jù)源控件SqlDataSource1。并且,通過簡單的向?qū)渲弥螅箶?shù)據(jù)源控件SqlDataSource1創(chuàng)建與示例數(shù)據(jù)庫Depart.mdf的關(guān)聯(lián),并進(jìn)一步關(guān)聯(lián)到其中的DepartInfo表格上。
【提示】為了簡化起見,示例數(shù)據(jù)庫Depart.mdf中僅包含了一個表格DepartInfo,而且其架構(gòu)也十分簡單(其中字段DepartID為主關(guān)鍵字),如下圖2所示:


最后生成的數(shù)據(jù)源控件SqlDataSource1配置參數(shù)(經(jīng)一定修改)如下所示:
<ASP:SqlDataSource ID="SqlDataSource1" 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 Name="DepartID" Type="Int32" />
        </DeleteParameters>  
      <InsertParameters>
           <ASP:Parameter Name="DepartID" Type="Int32" />
           <ASP:Parameter Name="DepartName" Type="String" />
       </InsertParameters>        

</ASP:SqlDataSource>
(二)修改頁面Default.ASPx布局
我們的打算是,在讓用戶進(jìn)行選擇,當(dāng)用戶需要新增一記錄時,便點(diǎn)擊“添加”按鈕,之后在Gridview的最后一行里,顯示一個空白行,讓用戶按字段進(jìn)行輸入。當(dāng)用戶決定不輸入新空白記錄時,可以按"隱藏"按鈕返回,該空白行消失。
要實(shí)現(xiàn)以上目的,我們可以充分利用Gridview的footer的模版功能進(jìn)行自定義,因為表格中僅有一個可編輯列DepartName;所以,我們只需要在此列的footer模版中,定義如下(注意其中加粗部分):
<ASP:Button ID="outAdd" runat="Server" Text="添加新記錄" nclick="outAdd_Click" />
<ASP:GridView ID="GridView1" 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 ID="LinkButton1" runat="server" CausesValidation="True"
                   CommandName="Update" Text="Update"></ASP:LinkButton>
                <ASP:LinkButton ID="LinkButton2" runat="server" CausesValidation="False"
                   CommandName="Cancel" Text="Cancel"></ASP:LinkButton>
           </EditItemTemplate>
           <ItemTemplate>
               <ASP:LinkButton ID="LinkButton1" runat="server" CausesValidation="False"
                   CommandName="Edit" Text="Edit"></ASP:LinkButton>
           </ItemTemplate>
           <FooterTemplate>
               <ASP:Button ID="btnAdd" Runat="server" Text="Add" nClick="btnAdd_Click" />  
               <ASP:Button ID="btnCancel" Runat="server" Text="Hide" nClick="btnCancel_Click" />
           </FooterTemplate>
       </ASP:TemplateField>
       <ASP:TemplateField ShowHeader="False">
           <ItemTemplate>
               <ASP:LinkButton ID="LinkButton2" runat="server" CausesValidation="False"
                   CommandName="Select" Text="Select"></ASP:LinkButton>
           </ItemTemplate>
           <ItemTemplate>
               <ASP:LinkButton ID="LinkButton3" 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 ID="DepartNameTextBox" runat="server" Text='<%# Bind("DepartName") %>'></ASP:TextBox>
           </EditItemTemplate>
           <ItemTemplate>
               <ASP:Label ID="Label1" runat="server" Text='<%# Bind("DepartName") %>'></ASP:Label>
           </ItemTemplate>
            <FooterTemplate>
               <ASP:TextBox ID="DepartNameBox" 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>模板內(nèi)容。顯然,在頁面啟動開始時這個模板是隱藏的。因此,這個按鈕的Click事件代碼(位于文件Default.ASPx.cx中)相當(dāng)簡單,如下所示:
protected void outAdd_Click(object sender, EventArgs e)
{
   GridView1.ShowFooter = true;

}
接下來是Gridview的有關(guān)的標(biāo)記代碼。可以看到,在DepartName列的<foottemplate>中提供了DepartNameBox文本框以供用戶輸入(因為本例中的這個字段僅是簡單的文本字段,對于其它類型字段的情況,需要創(chuàng)建相應(yīng)的ASP.NET控件進(jìn)行操作)。
另外,請注意在第一列的<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模版,因此設(shè)置showfooter屬性為false,而通過點(diǎn)擊按鈕Add則可以將新增的記錄插入(添加)到數(shù)據(jù)庫表格中去。
而Add按鈕,是當(dāng)用戶決定新增記錄時點(diǎn)選的,此時將設(shè)置showfooter屬性為true,以顯示各列的foottemplate,從而達(dá)到顯示新的一個空白行的目的。
特別值得注意的是,在這里你必須以內(nèi)聯(lián)方式把按鈕“Add”與“Hide”的Click事件處理器函數(shù)放置于ASPX文件之中,而不能放到代碼文件Default.ASPx.cs中;否則,會出現(xiàn)如圖3所示的編譯錯誤。

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

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

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


圖6 為GRIDVIEW控件添加“插入”功能的運(yùn)行示例快照

很顯然,在輸入部門名稱后點(diǎn)擊“Add”可以把新的部門加入到數(shù)據(jù)庫表格中,而點(diǎn)擊“Hide”按鈕則可以隱藏這個頁腳的顯示。
五、小結(jié)
ASP.NET 2.0引入的Gridview控件功能相當(dāng)強(qiáng)大,但是也存在一定的不足。本文中展示的僅僅是其中之一,而且也僅展示了為Gridview控件提示插入功能的一種方法。
最后注意,雖然本文示例右VS2008下調(diào)試通過,但根據(jù)我的經(jīng)驗,在VS2005的ASP.NET 2.0環(huán)境下也應(yīng)該沒有問題。

AspNet技術(shù)ASP.NET 2.0/3.5中直接操作Gridview控件插入新記錄,轉(zhuǎn)載需保留來源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請第一時間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 久久AV亚洲精品一区无码网 | 蜜桃无码AV视频在线观看 | 日韩在线av免费视久久 | 伊人久久大香线蕉avapp下载 | 久久综合久久鬼 | 日韩1区1区产品乱码芒果榴莲 | 无人区日本电影在线观看 | 年轻老师毛茸茸自由性 | 亚洲国产成人久久一区www妖精 | 久久综合九色 | 亚洲AV噜噜狠狠网址蜜桃尤物 | 美女胸禁止18以下看 | 黄色网址在线播放 | 亚洲国产精品免费观看 | 麻豆Av国产在线播放 | 久久成人伊人欧洲精品AV | 午夜免费福利 | 办公室沙发口爆12P 办公室日本肉丝OL在线 | 男神插曲女生软件完整版 | 337p啪啪人体大胆 | 挤奶门事件完整照片 | 国产精品人妻久久无码不卡 | 午夜福利体检 | 久久久久国产精品美女毛片 | 第一次处破女完整版电影 | 亚洲欧美日韩在线观看一区二区三区 | 啊…嗯啊好深男男高h文总受 | 91福利潘春春在线观看 | 欧美在线激情 | 成人特级毛片 | 龙泽罗拉av | 国产成人精品免费视频大全办公室 | 小护士大pp | 欧美日韩在线成人看片a | 熟妇的味道HD中文字幕 | 网友自拍区视频精品 | 岛国大片在线播放免费 | 国产精品国产三级国产AV麻豆 | 秘密教学93话恩爱久等了免费 | 国内精品久久久久影院老司 | 十大禁止安装的黄台有风险 |