Record Inserting in ASP.NET Project – हालांकि GridView Control Records की Editing, Deleting व Selecting को तो Support करता है, लेकिन नया Record Insert करने के लिए हम GridView Control को Use नहीं कर सकते, बल्कि Record Insertion के लिए हमें DetailsView या FormView Control को Use करना पडता है।
यहां भी Record Insertion से सम्बंधित Basic Process समान ही है, जहां सबसे पहले हमें Newly Insert किए जाने वाले Record से सम्बंधित INSERT SQL Statement को SqlDataSource Control की InsertQuery Property में Assign करना होता है और ये काम हम हमारे SqlDataSource की निम्न Properties को Set करते हुए करते हैं:
Property | Value |
ID | sourceProducts |
ConnectionString | Northwind (Data Source=.;Initial Catalog=Northwind;Integrated Security=True) |
SelectCommandType | Text |
SelectQuery | SELECT * FROM Products |
InsertCommandType | Text |
InsertQuery | INSERT INTO Products( ProductName, SupplierID, CategoryID, QuantityPerUnit, UnitPrice, UnitsInStock, UnitsOnOrder, ReorderLevel, Discontinued ) VALUES ( @ProductName, @SupplierID, @CategoryID, @QuantityPerUnit, @UnitPrice, @UnitsInStock, @UnitsOnOrder, @ReorderLevel, @Discontinued ) |
SqlDataSource Control की विभिन्न Properties को उपरोक्तानुसार Specify करके अब हम इस Control में आने वाले Records को FormView Control के साथ Bind कर सकते हैं, ताकि हम हमारी जरूरत के अनुसार नए Products की Information को Underlying Products Table में Insert कर सकें और इस Control को Bind करने के लिए हम Visual Studio में निम्न चित्रानुसार Setting कर सकते हैं:
जैसे ही हम हमारे FormView Control के लिए “Choose Data Source:” Combobox में sourceProducts ID वाले SqlDataSource Control को Select करते हैं, हमारा FormView Control निम्न चित्रानुसार Update हो जाता है:
अब यदि हम हमारे इस Webpage को Run करें, तो हमारे सामने निम्नानुसार Page Display होता है:
जहां दिखाई देने वाले “New” Hyperlink पर Click करते ही हमारे सामने निम्न चित्रानुसार नया Record Insert करने से सम्बंधित विभिन्न TextBox Controls Render होने लगते हैं:
इस Form पर अपने नए Product की विभिन्न Information Fill करके जैसे ही हम “Insert” Hyperlink पर Click करते हैं, हमारा Newly Created Record, Underlying Database में Save हो जाता है और हमारे सामने फिर से पिछला Screen Show होने लगता है।
उपरोक्त चित्र में हम देख सकते हैं कि नया Record Insert करते समय हमने नए Product का ProductID Specify नहीं किया है, क्योंकि ProductID Generate करने का काम Underlying Database का होता है, इसलिए यदि हम यहां पर किसी ProductID को Specify करते हैं, तो हमें Error Face करना पडता है।
हालांकि हम उपरोक्तानुसार Steps Follow करते हुए ऐसा Webpage Create कर सकते हैं, जो कि Underlying Products Table में नया Record Insert करने में सक्षम है और इस जरूरत को पूरा करने के लिए INSERT SQL Query Specify करने के अलावा हमने कोई भी Manual Program Logic नहीं लिखा है। फिर भी ASP.NET Framework स्वयं अपने स्तर पर हमारे लिए स्वयं विभिन्न जरूरी Markups Create करता है, जो कि निम्नानुसार होते हैं:
File Name: RecordInserting.asxp
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="NewRecord.aspx.cs" Inherits="InsertRecord.NewRecord" %> <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title></title> </head> <body> <form id="form1" runat="server"> <div> <asp:SqlDataSource ID="sourceProducts" runat="server" ConnectionString="<%$ ConnectionStrings:Northwind %>" InsertCommand="INSERT INTO Products( ProductName, SupplierID, CategoryID, QuantityPerUnit, UnitPrice, UnitsInStock, UnitsOnOrder, ReorderLevel, Discontinued) VALUES ( @ProductName, @SupplierID, @CategoryID, @QuantityPerUnit, @UnitPrice, @UnitsInStock, @UnitsOnOrder, @ReorderLevel, @Discontinued)" SelectCommand="SELECT * FROM Products" ></asp:SqlDataSource> <br /> <asp:FormView ID="FormView1" runat="server" DataKeyNames="ProductID" DataSourceID="sourceProducts"> <EditItemTemplate> ProductID: <asp:Label ID="ProductIDLabel1" runat="server" Text='<%# Eval("ProductID") %>' /><br /> ProductName: <asp:TextBox ID="ProductNameTextBox" runat="server" Text='<%# Bind("ProductName") %>' /><br /> SupplierID: <asp:TextBox ID="SupplierIDTextBox" runat="server" Text='<%# Bind("SupplierID") %>' /><br /> CategoryID: <asp:TextBox ID="CategoryIDTextBox" runat="server" Text='<%# Bind("CategoryID") %>' /><br /> QuantityPerUnit: <asp:TextBox ID="QuantityPerUnitTextBox" runat="server" Text='<%# Bind("QuantityPerUnit") %>' /><br /> UnitPrice: <asp:TextBox ID="UnitPriceTextBox" runat="server" Text='<%# Bind("UnitPrice") %>' /><br /> UnitsInStock: <asp:TextBox ID="UnitsInStockTextBox" runat="server" Text='<%# Bind("UnitsInStock") %>' /><br /> UnitsOnOrder: <asp:TextBox ID="UnitsOnOrderTextBox" runat="server" Text='<%# Bind("UnitsOnOrder") %>' /><br /> ReorderLevel: <asp:TextBox ID="ReorderLevelTextBox" runat="server" Text='<%# Bind("ReorderLevel") %>' /><br /> Discontinued: <asp:CheckBox ID="DiscontinuedCheckBox" runat="server" Checked='<%# Bind("Discontinued") %>' /><br /> CategoryName: <asp:TextBox ID="CategoryNameTextBox" runat="server" Text='<%# Bind("CategoryName") %>' /><br /> <asp:LinkButton ID="UpdateButton" runat="server" CausesValidation="True" CommandName="Update" Text="Update" /> <asp:LinkButton ID="UpdateCancelButton" runat="server" CausesValidation="False" CommandName="Cancel" Text="Cancel" /> </EditItemTemplate> <InsertItemTemplate> ProductID: <asp:TextBox ID="ProductIDTextBox" runat="server" Text='<%# Bind("ProductID") %>' /><br /> ProductName: <asp:TextBox ID="ProductNameTextBox" runat="server" Text='<%# Bind("ProductName") %>' /><br /> SupplierID: <asp:TextBox ID="SupplierIDTextBox" runat="server" Text='<%# Bind("SupplierID") %>' /><br /> CategoryID: <asp:TextBox ID="CategoryIDTextBox" runat="server" Text='<%# Bind("CategoryID") %>' /><br /> QuantityPerUnit: <asp:TextBox ID="QuantityPerUnitTextBox" runat="server" Text='<%# Bind("QuantityPerUnit") %>' /><br /> UnitPrice: <asp:TextBox ID="UnitPriceTextBox" runat="server" Text='<%# Bind("UnitPrice") %>' /><br /> UnitsInStock: <asp:TextBox ID="UnitsInStockTextBox" runat="server" Text='<%# Bind("UnitsInStock") %>' /><br /> UnitsOnOrder: <asp:TextBox ID="UnitsOnOrderTextBox" runat="server" Text='<%# Bind("UnitsOnOrder") %>' /><br /> ReorderLevel: <asp:TextBox ID="ReorderLevelTextBox" runat="server" Text='<%# Bind("ReorderLevel") %>' /><br /> Discontinued: <asp:CheckBox ID="DiscontinuedCheckBox" runat="server" Checked='<%# Bind("Discontinued") %>' /><br /> CategoryName: <asp:TextBox ID="CategoryNameTextBox" runat="server" Text='<%# Bind("CategoryName") %>' /><br /> <asp:LinkButton ID="InsertButton" runat="server" CausesValidation="True" CommandName="Insert" Text="Insert" /> <asp:LinkButton ID="InsertCancelButton" runat="server" CausesValidation="False" CommandName="Cancel" Text="Cancel" /> </InsertItemTemplate> <ItemTemplate> ProductID: <asp:Label ID="ProductIDLabel" runat="server" Text='<%# Eval("ProductID") %>' /><br /> ProductName: <asp:Label ID="ProductNameLabel" runat="server" Text='<%# Bind("ProductName") %>' /><br /> SupplierID: <asp:Label ID="SupplierIDLabel" runat="server" Text='<%# Bind("SupplierID") %>' /><br /> CategoryID: <asp:Label ID="CategoryIDLabel" runat="server" Text='<%# Bind("CategoryID") %>' /><br /> QuantityPerUnit: <asp:Label ID="QuantityPerUnitLabel" runat="server" Text='<%# Bind("QuantityPerUnit") %>' /><br /> UnitPrice: <asp:Label ID="UnitPriceLabel" runat="server" Text='<%# Bind("UnitPrice") %>' /><br /> UnitsInStock: <asp:Label ID="UnitsInStockLabel" runat="server" Text='<%# Bind("UnitsInStock") %>' /><br /> UnitsOnOrder: <asp:Label ID="UnitsOnOrderLabel" runat="server" Text='<%# Bind("UnitsOnOrder") %>' /><br /> ReorderLevel: <asp:Label ID="ReorderLevelLabel" runat="server" Text='<%# Bind("ReorderLevel") %>' /><br /> Discontinued: <asp:CheckBox ID="DiscontinuedCheckBox" runat="server" Checked='<%# Bind("Discontinued") %>' Enabled="false" /><br /> CategoryName: <asp:Label ID="CategoryNameLabel" runat="server" Text='<%# Bind("CategoryNam") %>' /><br /> <asp:LinkButton ID="NewButton" runat="server" CausesValidation="False" CommandName="New" Text="New" /> </ItemTemplate> </asp:FormView> </div> </form> </body> </html>
जब हम Record Insertion करने हेतु अपने Webpage को Create करते हैं, तब हमें ConflictDetection व OldValuesParameterFormatString Properties को Set करने की जरूरत नहीं होती। क्योंकि एक Newly Insert किए जा रहे Record पर इनका कोई Effect नहीं होता।
इसके अलावा हम Bound Data Control को Insertion Support करने के लिए Configure भी कर सकते हैं, जिसके लिए हमें केवल AutoGenerateInsertButton Property को True Set करना होता है।
जब हम Record Insertion करते हैं, तब DetailsView व FormView Controls तथा अन्य सभी Rich Data Controls को विभिन्न प्रकार की जरूरतों को पूरा करने के लिए Properties Window का प्रयोग करते हुए Configure कर सकते हैं और क्योंकि इन Properties को समझना व उपयोग में लेना कोई ज्यादा मुश्किल काम नहीं होता, इसलिए इन Controls के Look and Feel से सम्बंधित Properties को हम यहां और अधिक विस्तार से Discuss नहीं कर रहे हैं।
ये Article इस वेबसाईट पर Selling हेतु उपलब्ध EBook Advance ASP.NET WebForms with C# in Hindi से लिया गया है। इसलिए यदि ये Article आपके लिए उपयोगी रहा, तो निश्चित रूप से ये पुस्तक भी आपके लिए काफी उपयोगी साबित होगी।
Advance ASP.NET WebForms in Hindi | Page:707 | Format: PDF