Verileri Temel Alan Özel Biçimlendirme (VB)Custom Formatting Based Upon Data (VB)

Scott Mitchell tarafındanby Scott Mitchell

Örnek uygulamayı indirin veya PDF 'yi indirinDownload Sample App or Download PDF

GridView, DetailsView veya FormView 'un biçimini, kendisine bağlı verilere göre ayarlamak birden çok şekilde gerçekleştirilebilir.Adjusting the format of the GridView, DetailsView, or FormView based upon the data bound to it can be accomplished in multiple ways. Bu öğreticide, veri bağlama biçimlendirmesinin veri sınırlama ve Rowtik olay işleyicilerinin kullanımı aracılığıyla nasıl gerçekleştirileceğini inceleyeceğiz.In this tutorial we'll look at how to accomplish data bound formatting through the use of the DataBound and RowDataBound event handlers.

GirişIntroduction

GridView, DetailsView ve FormView denetimlerinin görünümü, stille ilgili bir özellikler aracılığıyla özelleştirilebilir.The appearance of the GridView, DetailsView, and FormView controls can be customized through a myriad of style-related properties. CssClass, Font, BorderWidth, BorderStyle, BorderColor, Widthve Heightgibi özellikler, diğerleri arasında, işlenen denetimin genel görünümünü de dikte edin.Properties like CssClass, Font, BorderWidth, BorderStyle, BorderColor, Width, and Height, among others, dictate the general appearance of the rendered control. HeaderStyle, RowStyle, AlternatingRowStyleve diğer özellikler de dahil olmak üzere, aynı stil ayarlarının belirli bölümlere uygulanmasını sağlar.Properties including HeaderStyle, RowStyle, AlternatingRowStyle, and others allow these same style settings to be applied to particular sections. Benzer şekilde, bu stil ayarları alan düzeyinde uygulanabilir.Likewise, these style settings can be applied at the field level.

Çoğu senaryoda, biçimlendirme gereksinimleri, görünen verilerin değerine bağlıdır.In many scenarios though, the formatting requirements depend upon the value of the displayed data. Örneğin, stok ürünlerinin dışına ilgi çekmek için ürün bilgilerini içeren bir rapor, UnitsInStock ve UnitsOnOrder alanları her ikisi de 0 ' a eşit olan ürünler için arka plan rengini sarı olarak ayarlayabilir.For example, to draw attention to out of stock products, a report listing product information might set the background color to yellow for those products whose UnitsInStock and UnitsOnOrder fields are both equal to 0. Daha pahalı ürünlerin vurgulanmasını sağlamak için bu ürünlerin fiyatlarını, kalın yazı tipinde $75,00 ' den fazla maliyetlendirmeye yönelik olarak göstermek isteyebilir.To highlight the more expensive products, we may want to display the prices of those products costing more than $75.00 in a bold font.

GridView, DetailsView veya FormView 'un biçimini, kendisine bağlı verilere göre ayarlamak birden çok şekilde gerçekleştirilebilir.Adjusting the format of the GridView, DetailsView, or FormView based upon the data bound to it can be accomplished in multiple ways. Bu öğreticide, DataBound ve RowDataBound olay işleyicilerini kullanarak veri bağlantılı biçimlendirmeyi nasıl gerçekleştireceğinizi inceleyeceğiz.In this tutorial we'll look at how to accomplish data bound formatting through the use of the DataBound and RowDataBound event handlers. Sonraki öğreticide, alternatif bir yaklaşım keşfedeceğiz.In the next tutorial we'll explore an alternative approach.

DetailsView denetimininDataBoundolay Işleyicisini kullanmaUsing the DetailsView Control'sDataBoundEvent Handler

Veriler bir DetailsView 'a bağlandığında, bir veri kaynağı denetiminden ya da denetimin DataSource özelliğine programlı olarak veri atayarak ve DataBind() metodunu çağırarak, aşağıdaki adım dizisi gerçekleşir:When data is bound to a DetailsView, either from a data source control or through programmatically assigning data to the control's DataSource property and calling its DataBind() method, the following sequence of steps occur:

  1. Veri Web denetiminin DataBinding olayı ateşlenir.The data Web control's DataBinding event fires.
  2. Veriler veri Web denetimine bağlanır.The data is bound to the data Web control.
  3. Veri Web denetiminin DataBound olayı ateşlenir.The data Web control's DataBound event fires.

Özel mantık, bir olay işleyicisi aracılığıyla 1 ve 3 adımından hemen sonra eklenebilir.Custom logic can be injected immediately after steps 1 and 3 through an event handler. DataBound olayı için bir olay işleyicisi oluşturarak, veri Web denetimine bağlanan verileri program aracılığıyla tespit edebilir ve biçimlendirmeyi gerektiği gibi ayarlayabilirsiniz.By creating an event handler for the DataBound event we can programmatically determine the data that has been bound to the data Web control and adjust the formatting as needed. Bu durumda, bir ürünle ilgili genel bilgileri listelemek için bir DetailsView oluşturalım, ancak $75,00 ' i aşarsa kalın, italik yazı tipinde UnitPrice değeri görüntülenecektir.To illustrate this let's create a DetailsView that will list general information about a product, but will display the UnitPrice value in a bold, italic font if it exceeds $75.00.

1. Adım: ürün bilgilerini bir DetailsView 'da görüntülemeStep 1: Displaying the Product Information in a DetailsView

CustomFormatting klasöründeki CustomColors.aspx sayfasını açın, bir DetailsView denetimini araç kutusundan Tasarımcı üzerine sürükleyin, ID özellik değerini ExpensiveProductsPriceInBoldItalicolarak ayarlayın ve ProductsBLL sınıfının GetProducts() yöntemini çağıran yeni bir ObjectDataSource denetimine bağlayın.Open the CustomColors.aspx page in the CustomFormatting folder, drag a DetailsView control from the Toolbox onto the Designer, set its ID property value to ExpensiveProductsPriceInBoldItalic, and bind it to a new ObjectDataSource control that invokes the ProductsBLL class's GetProducts() method. Bunu gerçekleştirmeye yönelik ayrıntılı adımlar, önceki öğreticilerde ayrıntılı olarak incelendiğimiz için burada gözardı edilir.The detailed steps for accomplishing this are omitted here for brevity since we examined them in detail in previous tutorials.

ObjectDataSource 'u DetailsView 'a bağladıktan sonra, alan listesini değiştirmek için bir dakikanızı ayırın.Once you've bound the ObjectDataSource to the DetailsView, take a moment to modify the field list. ProductID, SupplierID, CategoryID, UnitsInStock, UnitsOnOrder, ReorderLevelve Discontinued BoundFields alanlarını kaldırmayı ve kalan BoundFields alanlarını yeniden adlandırmasını kabul ediyorum.I've opted to remove the ProductID, SupplierID, CategoryID, UnitsInStock, UnitsOnOrder, ReorderLevel, and Discontinued BoundFields and renamed and reformatted the remaining BoundFields. Ayrıca Width ve Height ayarlarını temizledi.I also cleared out the Width and Height settings. DetailsView yalnızca tek bir kayıt görüntülediğinden, son kullanıcının tüm ürünleri görüntülemesine izin vermek için sayfalama 'yi etkinleştirmemiz gerekir.Since the DetailsView displays only a single record, we need to enable paging in order to allow the end user to view all of the products. Bunu, DetailsView 'un akıllı etiketindeki sayfalama etkinleştir onay kutusunu işaretleyerek yapın.Do so by checking the Enable Paging checkbox in the DetailsView's smart tag.

Şekil 1 : DetailsView 'un akıllı etiketinde sayfalama etkinleştir onay kutusunu IşaretleyinFigure 1: Check the Enable Paging Checkbox in the DetailsView's Smart Tag

Şekil 1: Şekil 1: DetailsView 'un akıllı etiketindeki disk belleğini etkinleştir onay kutusunu işaretleyin (tam boyutlu görüntüyü görüntülemek için tıklayın)Figure 1: Figure 1: Check the Enable Paging Checkbox in the DetailsView's Smart Tag (Click to view full-size image)

Bu değişikliklerden sonra, DetailsView biçimlendirmesi şu şekilde olur:After these changes, the DetailsView markup will be:

<asp:DetailsView ID="DetailsView1" runat="server" AllowPaging="True"
    AutoGenerateRows="False" DataKeyNames="ProductID"
    DataSourceID="ObjectDataSource1" EnableViewState="False">
    <Fields>
        <asp:BoundField DataField="ProductName" HeaderText="Product"
          SortExpression="ProductName" />
        <asp:BoundField DataField="CategoryName" HeaderText="Category"
          ReadOnly="True" SortExpression="CategoryName" />
        <asp:BoundField DataField="SupplierName" HeaderText="Supplier"
          ReadOnly="True" SortExpression="SupplierName" />
        <asp:BoundField DataField="QuantityPerUnit"
          HeaderText="Qty/Unit" SortExpression="QuantityPerUnit" />
        <asp:BoundField DataField="UnitPrice" DataFormatString="{0:c}"
          HeaderText="Price"
            HtmlEncode="False" SortExpression="UnitPrice" />
    </Fields>
</asp:DetailsView>

Bu sayfayı tarayıcınızda test etmek için bir dakikanızı ayırın.Take a moment to test out this page in your browser.

DetailsView denetimi tek seferde bir ürün görüntülüyor The DetailsView Control Displays One Product at a Time

Şekil 2: DetailsView denetimi aynı anda bir ürünü görüntüler (tam boyutlu görüntüyü görüntülemek için tıklayın)Figure 2: The DetailsView Control Displays One Product at a Time (Click to view full-size image)

2. Adım: programlı olarak veri sınırlama olay Işleyicisindeki verilerin değerini belirlemeStep 2: Programmatically Determining the Value of the Data in the DataBound Event Handler

UnitPrice değeri $75,00 ' den fazla olan ürünler için kalın, italik yazı tipinde fiyat görüntülemek için, önce UnitPrice değerini programlı bir şekilde belirleyebilmemiz gerekir.In order to display the price in a bold, italic font for those products whose UnitPrice value exceeds $75.00, we need to first be able to programmatically determine the UnitPrice value. DetailsView için, DataBound olay işleyicisinde bu gerçekleştirilebilir.For the DetailsView, this can be accomplished in the DataBound event handler. Olay işleyicisini oluşturmak için tasarımcıda DetailsView öğesine tıklayıp Özellikler penceresi gidin.To create the event handler click on the DetailsView in the Designer then navigate to the Properties window. Bunu getirmek için F4 tuşuna basın, görünür değilse, Görünüm menüsüne gidin ve Özellikler penceresi menü seçeneğini belirleyin.Press F4 to bring it up, if it's not visible, or go to the View menu and select the Properties Window menu option. Özellikler penceresi, diğer bir deyişle, DetailsView 'un olaylarını listelemek için şimşek simgesine tıklayın.From the Properties window, click on the lightning bolt icon to list the DetailsView's events. Sonra, DataBound olayına çift tıklayın ya da oluşturmak istediğiniz olay işleyicisinin adını yazın.Next, either double-click the DataBound event or type in the name of the event handler you want to create.

Veri bağlama olayı için bir olay Işleyicisi oluşturun

Şekil 3: DataBound olayı Için bir olay işleyicisi oluşturmaFigure 3: Create an Event Handler for the DataBound Event

Note

Ayrıca, ASP.NET sayfasının kod bölümünden bir olay işleyicisi de oluşturabilirsiniz.You can also create an event handler from the ASP.NET page's code portion. Sayfanın üst kısmında iki açılan liste bulacaksınız.There you'll find two drop-down lists at the top of the page. Sol aşağı açılan listeden nesneyi ve sağ açılan listeden bir işleyici oluşturmak istediğiniz olayı seçin ve Visual Studio otomatik olarak uygun olay işleyicisini oluşturur.Select the object from the left drop-down list and the event you want to create a handler for from the right drop-down list and Visual Studio will automatically create the appropriate event handler.

Bunun yapılması olay işleyicisini otomatik olarak oluşturur ve sizi eklendiği kod bölümüne götürür.Doing so will automatically create the event handler and take you to the code portion where it has been added. Bu noktada şunları göreceksiniz:At this point you will see:

Protected Sub ExpensiveProductsPriceInBoldItalic_DataBound _
    (sender As Object, e As System.EventArgs) _
    Handles ExpensiveProductsPriceInBoldItalic.DataBound
End Sub

DetailsView 'a bağlantılı verilere DataItem özelliği aracılığıyla erişilebilir.The data bound to the DetailsView can be accessed via the DataItem property. Denetimlerimizi, kesin türü belirtilmiş bir DataRow örnekleri koleksiyonundan oluşan kesin türü belirtilmiş bir DataTable 'a bağlamamız gerektiğini geri çekin.Recall that we are binding our controls to a strongly-typed DataTable, which is composed of a collection of strongly-typed DataRow instances. DataTable, DetailsView 'a bağlandığında DataTable 'daki ilk DataRow, DetailsView 'un DataItem özelliğine atanır.When the DataTable is bound to the DetailsView, the first DataRow in the DataTable is assigned to the DetailsView's DataItem property. Özellikle, DataItem özelliğine DataRowView bir nesne atanır.Specifically, the DataItem property is assigned a DataRowView object. DataRowView``Row özelliğini, aslında ProductsRow bir örnek olan temel alınan DataRow nesnesine erişim sağlamak için kullanabiliriz.We can use the DataRowView's Row property to get access to the underlying DataRow object, which is actually a ProductsRow instance. Bu ProductsRow örneğine sahip olduktan sonra, yalnızca nesnenin özellik değerlerini inceleyerek kararımızı yapabiliriz.Once we have this ProductsRow instance we can make our decision by simply inspecting the object's property values.

Aşağıdaki kod, DetailsView denetimine bağlanıp UnitPrice değerin $75,00 ' den büyük olup olmadığını nasıl belirleyeceğini göstermektedir:The following code illustrates how to determine whether the UnitPrice value bound to the DetailsView control is greater than $75.00:

Protected Sub ExpensiveProductsPriceInBoldItalic_DataBound _
    (sender As Object, e As System.EventArgs) _
    Handles ExpensiveProductsPriceInBoldItalic.DataBound

    Dim product As Northwind.ProductsRow = _
        CType(CType(ExpensiveProductsPriceInBoldItalic.DataItem, _
            System.Data.DataRowView).Row, Northwind.ProductsRow)
    If Not product.IsUnitPriceNull() AndAlso product.UnitPrice > 75 Then
    End If
End Sub

Note

UnitPrice veritabanında NULL bir değere sahip olduğundan, önce ProductsRow``UnitPrice özelliğine erişmeden önce bir NULL değeriyle ilgilentireceğiz emin olun.Since UnitPrice can have a NULL value in the database, we first check to make sure that we're not dealing with a NULL value before accessing the ProductsRow's UnitPrice property. Bu denetim, NULL bir değere sahip olduğunda UnitPrice özelliğine erişmeye çalışdığımızda, ProductsRow nesnesinin bir StrongTypingException özel durumuoluşturması nedeniyle önemlidir.This check is important because if we attempt to access the UnitPrice property when it has a NULL value the ProductsRow object will throw a StrongTypingException exception.

3. Adım: DetailsView 'da BirimFiyat değerini biçimlendirmeStep 3: Formatting the UnitPrice Value in the DetailsView

Bu noktada, DetailsView 'a bağlı UnitPrice değerinin $75,00 ' ı aşan bir değere sahip olup olmadığını tespit edebiliyoruz, ancak henüz DetailsView 'un biçimlendirmesini uygun şekilde nasıl ayarlayabiliriz.At this point we can determine whether the UnitPrice value bound to the DetailsView has a value that exceeds $75.00, but we've yet to see how to programmatically adjust the DetailsView's formatting accordingly. DetailsView 'da bir satırın tamamına ilişkin biçimlendirmeyi değiştirmek için DetailsViewID.Rows(index)kullanarak satıra programlı bir şekilde erişin; belirli bir hücreyi değiştirmek için DetailsViewID.Rows(index).Cells(index)kullanın.To modify the formatting of an entire row in the DetailsView, programmatically access the row using DetailsViewID.Rows(index); to modify a particular cell, access use DetailsViewID.Rows(index).Cells(index). Satır veya hücreye bir başvurduktan sonra, stili ilgili özelliklerini ayarlayarak görünümünü ayarlayabiliriz.Once we have a reference to the row or cell we can then adjust its appearance by setting its style-related properties.

Bir satıra programlı bir şekilde erişmek için, 0 ' dan başlayan satırın dizinini bilmeniz gerekir.Accessing a row programmatically requires that you know the row's index, which starts at 0. UnitPrice satır, DetailsView 'un dizinine bir dizin vererek ve ExpensiveProductsPriceInBoldItalic.Rows(4)kullanılarak programlı bir şekilde erişilebilir hale getirmek için kullanılan beşinci satırdır.The UnitPrice row is the fifth row in the DetailsView, giving it an index of 4 and making it programmatically accessible using ExpensiveProductsPriceInBoldItalic.Rows(4). Bu noktada, aşağıdaki kodu kullanarak tüm satırın içeriğinin kalın, italik yazı tipinde görüntülenmesini sağlayabilirsiniz:At this point we could have the entire row's content displayed in a bold, italic font by using the following code:

ExpensiveProductsPriceInBoldItalic.Rows(4).Font.Bold = True
ExpensiveProductsPriceInBoldItalic.Rows(4).Font.Italic = True

Ancak bu, hem etiketi (fiyat) hem de kalın ve italik değerlerini yapar.However, this will make both the label (Price) and the value bold and italic. Yalnızca kalın ve italik değerlerini yapmak istediğimiz takdirde, bu biçimlendirmeyi satırdaki ikinci hücreye uygulamanız gerekir ve bu biçimlendirme aşağıdakiler kullanılarak gerçekleştirilebilir:If we want to make just the value bold and italic we need to apply this formatting to the second cell in the row, which can be accomplished using the following:

ExpensiveProductsPriceInBoldItalic.Rows(4).Cells(1).Font.Bold = True
ExpensiveProductsPriceInBoldItalic.Rows(4).Cells(1).Font.Italic = True

Öğreticilerimiz, yukarıda gösterilen biçimlendirme ve stille ilgili bilgiler arasında temiz bir ayrım sağlamak için stil sayfaları kullandığından, yukarıda gösterildiği gibi belirli stil özelliklerini ayarlamak yerine bir CSS sınıfı kullanalım.Since our tutorials thus far have used stylesheets to maintain a clean separation between the rendered markup and style-related information, rather than setting the specific style properties as shown above let's instead use a CSS class. Styles.css stil sayfasını açın ve aşağıdaki tanıma sahip ExpensivePriceEmphasis adlı yeni bir CSS sınıfı ekleyin:Open the Styles.css stylesheet and add a new CSS class named ExpensivePriceEmphasis with the following definition:

.ExpensivePriceEmphasis
{
    font-weight: bold;
    font-style: italic;
}

Ardından, DataBound olay işleyicisinde, hücrenin CssClass özelliğini ExpensivePriceEmphasisolarak ayarlayın.Then, in the DataBound event handler, set the cell's CssClass property to ExpensivePriceEmphasis. Aşağıdaki kod, DataBound olay işleyicisini tamamen gösterir:The following code shows the DataBound event handler in its entirety:

Protected Sub ExpensiveProductsPriceInBoldItalic_DataBound _
    (sender As Object, e As System.EventArgs) _
    Handles ExpensiveProductsPriceInBoldItalic.DataBound

    Dim product As Northwind.ProductsRow = _
        CType(CType(ExpensiveProductsPriceInBoldItalic.DataItem, _
            System.Data.DataRowView).Row, Northwind.ProductsRow)
    If Not product.IsUnitPriceNull() AndAlso product.UnitPrice > 75 Then
       ExpensiveProductsPriceInBoldItalic.Rows(4).Cells(1).CssClass = _
            "ExpensivePriceEmphasis"
    End If
End Sub

$75,00 ' den küçük olan Chai 'yi görüntülerken, Fiyat normal bir yazı tipinde görüntülenir (bkz. Şekil 4).When viewing Chai, which costs less than $75.00, the price is displayed in a normal font (see Figure 4). Bununla birlikte, $97,00 fiyatı bulunan mishi Koin NIU görüntülenirken, Fiyat kalın, italik yazı tipinde görüntülenir (bkz. Şekil 5).However, when viewing Mishi Kobe Niku, which has a price of $97.00, the price is displayed in a bold, italic font (see Figure 5).

$75,00 ' den küçük fiyatlar normal bir yazı tipinde görüntülenirPrices Less than $75.00 are Displayed in a Normal Font

Şekil 4: $75,00 'den düşük fiyatlar normal bir yazı tipinde görüntülenir (tam boyutlu görüntüyü görüntülemek için tıklayın)Figure 4: Prices Less than $75.00 are Displayed in a Normal Font (Click to view full-size image)

pahalı ürünlerin fiyatları kalın, Italik yazı tipinde görüntülenirExpensive Products' Prices are Displayed in a Bold, Italic Font

Şekil 5: pahalı ürünlerin fiyatları kalın, Italik yazı tipiyle görüntülenir (tam boyutlu görüntüyü görüntülemek için tıklayın)Figure 5: Expensive Products' Prices are Displayed in a Bold, Italic Font (Click to view full-size image)

FormView denetimininDataBoundolay Işleyicisini kullanmaUsing the FormView Control'sDataBoundEvent Handler

Bir FormView 'a göre temel alınan verileri belirleme adımları, bir DetailsView ile aynı DataBound bir olay işleyicisi oluşturur, DataItem özelliğini denetime göre uygun nesne türüne dönüştürmek ve devam etmek için kullanılır.The steps for determining the underlying data bound to a FormView are identical to those for a DetailsView create a DataBound event handler, cast the DataItem property to the appropriate object type bound to the control, and determine how to proceed. FormView ve DetailsView, bununla birlikte farklılık gösterir, ancak kullanıcı arabiriminin görünümü nasıl güncelleştirilir.The FormView and DetailsView differ, however, in how their user interface's appearance is updated.

FormView bir BoundFields içermiyor ve bu nedenle Rows koleksiyonu eksik.The FormView does not contain any BoundFields and therefore lacks the Rows collection. Bunun yerine, bir FormView statik HTML, Web denetimleri ve veri bağlama söz dizimi karışımı içerebilen şablonlardan oluşur.Instead, a FormView is composed of templates, which can contain a mix of static HTML, Web controls, and databinding syntax. Bir FormView 'un stilini ayarlamak genellikle FormView 'un şablonlarındaki bir veya daha fazla Web denetiminin stilini ayarlamayı içerir.Adjusting the style of a FormView typically involves adjusting the style of one or more of the Web controls within the FormView's templates.

Bunu göstermek için, önceki örnekteki gibi ürünleri listelemek üzere bir FormView kullanalım, ancak bu süre 10 ' dan küçük veya buna eşit bir kırmızı yazı tipiyle görüntülenen hisse senedi ile stoktaki birimleri yalnızca ürün adını ve birimleri görüntülerimize izin verir.To illustrate this, let's use a FormView to list products like in the previous example, but this time let's display just the product name and units in stock with the units in stock displayed in a red font if it is less than or equal to 10.

4. Adım: ürün bilgilerini bir FormView 'da görüntülemeStep 4: Displaying the Product Information in a FormView

DetailsView 'un altındaki CustomColors.aspx sayfasına bir FormView ekleyin ve ID özelliğini LowStockedProductsInRedolarak ayarlayın.Add a FormView to the CustomColors.aspx page beneath the DetailsView and set its ID property to LowStockedProductsInRed. FormView öğesini, önceki adımdan oluşturulan ObjectDataSource denetimine bağlayın.Bind the FormView to the ObjectDataSource control created from the previous step. Bu, FormView için bir ItemTemplate, EditItemTemplateve InsertItemTemplate oluşturur.This will create an ItemTemplate, EditItemTemplate, and InsertItemTemplate for the FormView. EditItemTemplate ve InsertItemTemplate kaldırın ve ItemTemplate, her biri uygun şekilde adlandırılmış etiket denetimlerinde yalnızca ProductName ve UnitsInStock değerlerini içerecek şekilde kolaylaştırın.Remove the EditItemTemplate and InsertItemTemplate and simplify the ItemTemplate to include just the ProductName and UnitsInStock values, each in their own appropriately-named Label controls. Önceki örnekteki DetailsView 'da olduğu gibi, FormView 'un akıllı etiketinde de sayfalama etkinleştir onay kutusunu işaretleyin.As with the DetailsView from the earlier example, also check the Enable Paging checkbox in the FormView's smart tag.

Bu düzenlemeleriniz sonrasında, FormView 'un biçimlendirmesi aşağıdakine benzer görünmelidir:After these edits your FormView's markup should look similar to the following:

<asp:FormView ID="LowStockedProductsInRed" runat="server"
    DataKeyNames="ProductID" DataSourceID="ObjectDataSource1"
    AllowPaging="True" EnableViewState="False">
    <ItemTemplate>
        <b>Product:</b>
        <asp:Label ID="ProductNameLabel" runat="server"
         Text='<%# Bind("ProductName") %>'>
        </asp:Label><br />
        <b>Units In Stock:</b>
        <asp:Label ID="UnitsInStockLabel" runat="server"
          Text='<%# Bind("UnitsInStock") %>'>
        </asp:Label>
    </ItemTemplate>
</asp:FormView>

ItemTemplate şunu içerdiğini unutmayın:Note that the ItemTemplate contains:

  • STATIK HTML "Product:" ve "Stock Units:" metinleriyle birlikte <br /> ve <b> öğeleri.Static HTML the text "Product:" and "Units In Stock:" along with the <br /> and <b> elements.
  • Web , ProductNameLabel ve UnitsInStockLabeliki etiket denetimini denetler.Web controls the two Label controls, ProductNameLabel and UnitsInStockLabel.
  • Veri bağlama söz dizimi <%# Bind("ProductName") %> ve <%# Bind("UnitsInStock") %> söz dizimi, değerleri bu alanlardan etiket denetimleri ' Text özelliklerine atar.Databinding syntax the <%# Bind("ProductName") %> and <%# Bind("UnitsInStock") %> syntax, which assigns the values from these fields to the Label controls' Text properties.

5. Adım: programlı olarak veri sınırlama olay Işleyicisindeki verilerin değerini belirlemeStep 5: Programmatically Determining the Value of the Data in the DataBound Event Handler

FormView 'un işaretlemesi tamamlanarak bir sonraki adım, UnitsInStock değerinin 10 ' dan küçük veya ona eşit olup olmadığını programlı bir şekilde belirlemektir.With the FormView's markup complete, the next step is to programmatically determine if the UnitsInStock value is less than or equal to 10. Bu, DetailsView ile aynı şekilde tam olarak gerçekleştirilir.This is accomplished in the exact same manner with the FormView as it was with the DetailsView. FormView 'un DataBound olayı için bir olay işleyicisi oluşturarak başlayın.Start by creating an event handler for the FormView's DataBound event.

Veri bağlama olay Işleyicisini oluşturma

Şekil 6: DataBound olay işleyicisini oluşturmaFigure 6: Create the DataBound Event Handler

Olay işleyicisinde, FormView 'un DataItem özelliğini bir ProductsRow örneğine atayın ve UnitsInPrice değerinin kırmızı bir yazı tipinde görüntülemesi gerekip gerekmediğini saptayın.In the event handler cast the FormView's DataItem property to a ProductsRow instance and determine whether the UnitsInPrice value is such that we need to display it in a red font.

Protected Sub LowStockedProductsInRed_DataBound _
    (sender As Object, e As System.EventArgs) _
    Handles LowStockedProductsInRed.DataBound

    Dim product As Northwind.ProductsRow = _
        CType(CType(LowStockedProductsInRed.DataItem, System.Data.DataRowView).Row, _
            Northwind.ProductsRow)
    If Not product.IsUnitsInStockNull() AndAlso product.UnitsInStock <= 10 Then
        Dim unitsInStock As Label = _
            CType(LowStockedProductsInRed.FindControl("UnitsInStockLabel"), Label)

        If unitsInStock IsNot Nothing Then
        End If
    End If
End Sub

6. Adım: FormView 'un ItemTemplate 'te UnitsInStockLabel etiketi denetimini biçimlendirmeStep 6: Formatting the UnitsInStockLabel Label Control in the FormView's ItemTemplate

Son adım, değeri 10 veya daha küçükse kırmızı bir yazı tipinde görüntülenecek UnitsInStock değerini biçimlendirmadır.The final step is to format the displayed UnitsInStock value in a red font if the value is 10 or less. Bunu gerçekleştirmek için, ItemTemplate UnitsInStockLabel denetimine programlı bir şekilde erişmesi ve onun stil özelliklerini metnin kırmızı renkte gösterilmesi için ayarlamanız gerekir.To accomplish this we need to programmatically access the UnitsInStockLabel control in the ItemTemplate and set its style properties so that its text is displayed in red. Şablondaki bir Web denetimine erişmek için aşağıdaki gibi FindControl("controlID") yöntemi kullanın:To access a Web control in a template, use the FindControl("controlID") method like this:

Dim someName As WebControlType = _
    CType(FormViewID.FindControl("controlID"), WebControlType)

Örneğimiz için ID değeri UnitsInStockLabelolan bir etiket denetimine erişmek istiyoruz, bu nedenle şunları kullanacağız:For our example we want to access a Label control whose ID value is UnitsInStockLabel, so we'd use:

Dim unitsInStock As Label = _
    CType(LowStockedProductsInRed.FindControl("UnitsInStockLabel"), Label)

Web denetimine programlı bir başvurduktan sonra, stille ilgili özellikleri gerektiği gibi değiştirebiliriz.Once we have a programmatic reference to the Web control, we can modify its style-related properties as needed. Önceki örnekte olduğu gibi, Styles.css LowUnitsInStockEmphasisadlı bir CSS sınıfı oluşturduğdum.As with the earlier example, I've created a CSS class in Styles.css named LowUnitsInStockEmphasis. Bu stili etiket Web denetimine uygulamak için CssClass özelliğini uygun şekilde ayarlayın.To apply this style to the Label Web control, set its CssClass property accordingly.

Protected Sub LowStockedProductsInRed_DataBound _
    (sender As Object, e As System.EventArgs) _
    Handles LowStockedProductsInRed.DataBound

    Dim product As Northwind.ProductsRow = _
        CType(CType(LowStockedProductsInRed.DataItem, System.Data.DataRowView).Row, _
            Northwind.ProductsRow)
    If Not product.IsUnitsInStockNull() AndAlso product.UnitsInStock <= 10 Then
        Dim unitsInStock As Label = _
            CType(LowStockedProductsInRed.FindControl("UnitsInStockLabel"), Label)

        If unitsInStock IsNot Nothing Then
            unitsInStock.CssClass = "LowUnitsInStockEmphasis"
        End If
    End If
End Sub

Note

FindControl("controlID") kullanarak Web denetimine erişen bir şablonu biçimlendirme söz dizimi ve ardından stil ilişkili özellikleri ayarlamak, DetailsView veya GridView denetimlerinde Templatefields kullanılırken de kullanılabilir.The syntax for formatting a template programmatically accessing the Web control using FindControl("controlID") and then setting its style-related properties can also be used when using TemplateFields in the DetailsView or GridView controls. Sonraki öğreticimizde TemplateFields ' i inceleyeceğiz.We'll examine TemplateFields in our next tutorial.

Şekil 7 ' den büyük bir ürün görüntülenirken, Şekil 8 ' deki ürünün değeri 10 ' dan daha düşük olduğunda, bu FormView, UnitsInStock.Figures 7 shows the FormView when viewing a product whose UnitsInStock value is greater than 10, while the product in Figure 8 has its value less than 10.

Stoğa yeterince büyük birimlere sahip ürünler Için özel biçimlendirme uygulanmazFor Products With a Sufficiently Large Units In Stock, No Custom Formatting is Applied

Şekil 7: stokta yeterince büyük birimlere sahip ürünler Için özel biçimlendirme uygulanmaz (tam boyutlu görüntüyü görüntülemek için tıklatın)Figure 7: For Products With a Sufficiently Large Units In Stock, No Custom Formatting is Applied (Click to view full-size image)

Hisse senedi numarası birimler, 10 veya daha az değere sahip olan ürünler için kırmızı renkte gösterilirThe Units in Stock Number is Shown in Red for Those Products With Values of 10 or Less

Şekil 8: stok numarasında birimler, 10 veya daha az değere sahip ürünler için kırmızı renkle gösterilir (tam boyutlu görüntüyü görüntülemek için tıklatın)Figure 8: The Units in Stock Number is Shown in Red for Those Products With Values of 10 or Less (Click to view full-size image)

GridView 'unRowDataBoundolayı ile biçimlendirmeFormatting with the GridView'sRowDataBoundEvent

Daha önce, DetailsView ve FormView 'un, veri bağlama sırasında ilerleme durumunu denetleme adımlarının sırasını inceliyoruz.Earlier we examined the sequence of steps the DetailsView and FormView controls progress through during databinding. Bu adımları bir kez Yenileyici olarak bir kez daha inceleyelim.Let's look over these steps once again as a refresher.

  1. Veri Web denetiminin DataBinding olayı ateşlenir.The data Web control's DataBinding event fires.
  2. Veriler veri Web denetimine bağlanır.The data is bound to the data Web control.
  3. Veri Web denetiminin DataBound olayı ateşlenir.The data Web control's DataBound event fires.

Bu üç basit adım, DetailsView ve FormView için yeterlidir çünkü yalnızca tek bir kayıt görüntüler.These three simple steps are sufficient for the DetailsView and FormView because they display only a single record. GridView için, buna (yalnızca ilki değil) ait Tüm kayıtları görüntüleyen GridView için adım 2 ' nin bir bit daha vardır.For the GridView, which displays all records bound to it (not just the first), step 2 is a bit more involved.

2. adımda GridView, veri kaynağını numaralandırır ve her kayıt için bir GridViewRow örneği oluşturur ve geçerli kaydı buna bağlar.In step 2 the GridView enumerates the data source and, for each record, creates a GridViewRow instance and binds the current record to it. GridView 'a eklenen her GridViewRow için iki olay oluşur:For each GridViewRow added to the GridView, two events are raised:

  • GridViewRow oluşturulduktan sonra RowCreated ateşlenirRowCreated fires after the GridViewRow has been created
  • RowDataBound geçerli kayıt GridViewRowbağlandıktan sonra harekete geçirilir.RowDataBound fires after the current record has been bound to the GridViewRow.

GridView için, veri bağlama aşağıdaki adım dizisiyle daha doğru şekilde açıklanmıştır:For the GridView, then, data binding is more accurately described by the following sequence of steps:

  1. GridView 'un DataBinding olayı ateşlenir.The GridView's DataBinding event fires.

  2. Veriler GridView 'a bağlanır.The data is bound to the GridView.

    Veri kaynağındaki her kayıt içinFor each record in the data source

    1. GridViewRow nesnesi oluşturmaCreate a GridViewRow object
    2. RowCreated olayını harekete geçirmeFire the RowCreated event
    3. Kaydı GridViewRow bağlayınBind the record to the GridViewRow
    4. RowDataBound olayını harekete geçirmeFire the RowDataBound event
    5. GridViewRow Rows koleksiyonuna ekleyinAdd the GridViewRow to the Rows collection
  3. GridView 'un DataBound olayı ateşlenir.The GridView's DataBound event fires.

GridView 'un bireysel kayıtlarının biçimini özelleştirmek için, RowDataBound olayı için bir olay işleyicisi oluşturuyoruz.To customize the format of the GridView's individual records, then, we need to create an event handler for the RowDataBound event. Bunu göstermek için, her bir ürünün adını, kategorisini ve fiyatını listeleyen CustomColors.aspx sayfasına, fiyatları sarı bir arka plan rengiyle $10,00 ' den küçük olan ürünleri vurgulayan bir GridView ekleyelim.To illustrate this, let's add a GridView to the CustomColors.aspx page that lists the name, category, and price for each product, highlighting those products whose price is less than $10.00 with a yellow background color.

7. Adım: ürün bilgilerini bir GridView 'da görüntülemeStep 7: Displaying Product Information in a GridView

Önceki örnekteki FormView 'un altına bir GridView ekleyin ve ID özelliğini HighlightCheapProductsolarak ayarlayın.Add a GridView beneath the FormView from the previous example and set its ID property to HighlightCheapProducts. Sayfadaki tüm ürünleri döndüren bir ObjectDataSource zaten var, GridView 'u bu sayfaya bağlayın.Since we already have an ObjectDataSource that returns all products on the page, bind the GridView to that. Son olarak, GridView 'un BoundFields alanlarını yalnızca ürünlerin adlarını, kategorilerini ve fiyatlarını içerecek şekilde düzenleyin.Finally, edit the GridView's BoundFields to include just the products' names, categories, and prices. Bu düzenlemelerin ardından GridView 'un biçimlendirmesi şöyle görünmelidir:After these edits the GridView's markup should look like:

<asp:GridView ID="HighlightCheapProducts" AutoGenerateColumns="False"
    DataKeyNames="ProductID" DataSourceID="ObjectDataSource1"
    EnableViewState="False" runat="server">
    <Columns>
        <asp:BoundField DataField="ProductName" HeaderText="Product"
          SortExpression="ProductName" />
        <asp:BoundField DataField="CategoryName" HeaderText="Category"
          ReadOnly="True" SortExpression="CategoryName" />
        <asp:BoundField DataField="UnitPrice" DataFormatString="{0:c}"
          HeaderText="Price"
            HtmlEncode="False" SortExpression="UnitPrice" />
    </Columns>
</asp:GridView>

Şekil 9 ' da bir tarayıcıdan görüntülendiklerinde bu noktaya yönelik ilerleme durumu gösterilmektedir.Figure 9 shows our progress to this point when viewed through a browser.

GridView her ürünün adını, kategorisini ve fiyatını listelerThe GridView Lists the Name, Category, and Price For Each Product

Şekil 9: GridView, her bir ürünün adını, kategorisini ve fiyatını listeler (tam boyutlu görüntüyü görüntülemek için tıklatın)Figure 9: The GridView Lists the Name, Category, and Price For Each Product (Click to view full-size image)

8. Adım: program aracılığıyla Rowveriye bağlı olay Işleyicisindeki verilerin değerini belirlemeStep 8: Programmatically Determining the Value of the Data in the RowDataBound Event Handler

ProductsDataTable GridView 'a bağlandığında ProductsRow örnekleri numaralandırılır ve her ProductsRow GridViewRow oluşturulur.When the ProductsDataTable is bound to the GridView its ProductsRow instances are enumerated and for each ProductsRow a GridViewRow is created. GridViewRow``DataItem özelliği, GridView 'un RowDataBound olay işleyicisi oluşturulduktan sonra belirli ProductRowatanır.The GridViewRow's DataItem property is assigned to the particular ProductRow, after which the GridView's RowDataBound event handler is raised. GridView 'a yönelik her ürünün UnitPrice değerini öğrenmek için, GridView 'un RowDataBound olayı için bir olay işleyicisi oluşturuyoruz.To determine the UnitPrice value for each product bound to the GridView, then, we need to create an event handler for the GridView's RowDataBound event. Bu olay işleyicisinde, geçerli GridViewRow UnitPrice değerini inceleyebilir ve bu satır için bir biçimlendirme kararı verebilir.In this event handler we can inspect the UnitPrice value for the current GridViewRow and make a formatting decision for that row.

Bu olay işleyicisi, FormView ve DetailsView ile aynı adım serisi kullanılarak oluşturulabilir.This event handler can be created using the same series of steps as with the FormView and DetailsView.

GridView 'un Rowveriye bağlı olayı için bir olay Işleyicisi oluşturun

Şekil 10: GridView 'un RowDataBound olayı Için bir olay işleyicisi oluşturmaFigure 10: Create an Event Handler for the GridView's RowDataBound Event

Olay işleyicisini bu şekilde oluşturmak, aşağıdaki kodun ASP.NET sayfasının kod bölümüne otomatik olarak eklenmesine neden olur:Creating the event handler in this manner will cause the following code to be automatically added to the ASP.NET page's code portion:

Protected Sub HighlightCheapProducts_RowDataBound _
    (sender As Object, e As System.Web.UI.WebControls.GridViewRowEventArgs) _
    Handles HighlightCheapProducts.RowDataBound

End Sub

RowDataBound olayı tetiklendiğinde, olay işleyicisi ikinci parametresi olarak, Rowadında bir özelliği olan GridViewRowEventArgstüründe bir nesne olarak geçirilir.When the RowDataBound event fires, the event handler is passed as its second parameter an object of type GridViewRowEventArgs, which has a property named Row. Bu özellik, yalnızca veri bağlanan GridViewRow bir başvuru döndürür.This property returns a reference to the GridViewRow that was just data bound. GridViewRow ile bağlantılı ProductsRow örneğine erişmek için DataItem özelliğini şu şekilde kullanıyoruz:To access the ProductsRow instance bound to the GridViewRow we use the DataItem property like so:

Protected Sub HighlightCheapProducts_RowDataBound _
    (sender As Object, e As System.Web.UI.WebControls.GridViewRowEventArgs) _
    Handles HighlightCheapProducts.RowDataBound

    Dim product As Northwind.ProductsRow = _
        CType(CType(e.Row.DataItem, System.Data.DataRowView).Row, Northwind.ProductsRow)
    If Not product.IsUnitPriceNull() AndAlso product.UnitPrice < 10 Then
    End If
End Sub

RowDataBound olay işleyicisiyle çalışırken, GridView 'un farklı tipte satırlardan oluştuğunu ve bu olayın Tüm satır türleri için tetiklendiğini aklınızda bulundurmanız önemlidir.When working with the RowDataBound event handler it is important to keep in mind that the GridView is composed of different types of rows and that this event is fired for all row types. GridViewRowtürü RowType özelliği tarafından belirlenebilir ve olası değerlerden birine sahip olabilir:A GridViewRow's type can be determined by its RowType property, and can have one of the possible values:

  • GridView 'un bir kaydına bağlanan bir satır DataRow DataSourceDataRow a row that is bound to a record from the GridView's DataSource
  • GridView 'un DataSource boş olması durumunda gösterilecek satırı EmptyDataRowEmptyDataRow the row displayed if the GridView's DataSource is empty
  • altbilgi satırını Footer; GridView 'un ShowFooter özelliği True olarak ayarlandıysa görüntülenirFooter the footer row; shown if the GridView's ShowFooter property is set to True
  • üst bilgi satırını Header; GridView 'ın Showwheader özelliği True olarak ayarlandıysa gösterilir (varsayılan)Header the header row; shown if the GridView's ShowHeader property is set to True (the default)
  • sayfalama arabirimini görüntüleyen satır, sayfalama uygulayan GridView için PagerPager for GridView's that implement paging, the row that displays the paging interface
  • Separator GridView için kullanılmaz, ancak DataList ve Repeater denetimleri için RowType özellikleri tarafından kullanılır, gelecek öğreticilerde ele alacağız iki veri Web denetimiSeparator not used for the GridView, but used by the RowType properties for the DataList and Repeater controls, two data Web controls we'll discuss in future tutorials

EmptyDataRow, Header, Footerve Pager satırları DataSource kaydıyla ilişkili olmadığından, her zaman Nothing özellikleri için bir DataItem değeri olur.Since the EmptyDataRow, Header, Footer, and Pager rows aren't associated with a DataSource record, they will always have a value of Nothing for their DataItem property. Bu nedenle, geçerli GridViewRow``DataItem özelliğiyle çalışmayı denemeden önce, önce bir DataRowilgilentireceğiz emin olmanız gerekir.For this reason, before attempting to work with the current GridViewRow's DataItem property, we first must make sure that we're dealing with a DataRow. Bu, GridViewRow``RowType özelliği şöyle denetlenerek gerçekleştirilebilir:This can be accomplished by checking the GridViewRow's RowType property like so:

Protected Sub HighlightCheapProducts_RowDataBound _
    (sender As Object, e As System.Web.UI.WebControls.GridViewRowEventArgs) _
    Handles HighlightCheapProducts.RowDataBound

    If e.Row.RowType = DataControlRowType.DataRow Then
        Dim product As Northwind.ProductsRow = _
            CType(CType(e.Row.DataItem, System.Data.DataRowView).Row, Northwind.ProductsRow)
        If Not product.IsUnitPriceNull() AndAlso product.UnitPrice < 10 Then
        End If
    End If
End Sub

9. Adım: BirimFiyat değeri $10,00 ' den az olduğunda sarı satırı vurgulamaStep 9: Highlighting the Row Yellow When the UnitPrice Value is Less than $10.00

Son adım, söz konusu satırın UnitPrice değerinin $10,00 ' den küçük olması halinde tüm GridViewRow program aracılığıyla vurgulayacağız.The last step is to programmatically highlight the entire GridViewRow if the UnitPrice value for that row is less than $10.00. GridView 'un satırlarına veya hücrelerine erişme söz dizimi, tüm satıra erişmek için GridViewID.Rows(index) DetailsView ile aynıdır, GridViewID.Rows(index).Cells(index) belirli bir hücreye erişin.The syntax for accessing a GridView's rows or cells is the same as with the DetailsView GridViewID.Rows(index) to access the entire row, GridViewID.Rows(index).Cells(index) to access a particular cell. Ancak RowDataBound olay işleyicisi veri bağlantılı GridViewRow ne zaman tetiklendiği zaman GridView 'un Rows koleksiyonuna eklenmemiştir.However, when the RowDataBound event handler fires the data bound GridViewRow has yet to be added to the GridView's Rows collection. Bu nedenle, satır koleksiyonunu kullanarak RowDataBound olay işleyicisindeki geçerli GridViewRow örneğine erişemezsiniz.Therefore you cannot access the current GridViewRow instance from the RowDataBound event handler using the Rows collection.

GridViewID.Rows(index)yerine, e.Rowkullanarak RowDataBound olay işleyicisindeki geçerli GridViewRow örneğe başvuracağız.Instead of GridViewID.Rows(index), we can reference the current GridViewRow instance in the RowDataBound event handler using e.Row. Diğer bir deyişle, kullanacağımız RowDataBound olay işleyicisinden geçerli GridViewRow örneğini vurgulamak için:That is, in order to highlight the current GridViewRow instance from the RowDataBound event handler we would use:

e.Row.BackColor = System.Drawing.Color.Yellow

GridViewRow``BackColor özelliğini doğrudan ayarlamak yerine CSS sınıflarının kullanılmasına bakalım.Rather than set the GridViewRow's BackColor property directly, let's stick with using CSS classes. Arka plan rengini sarı olarak ayarlayan AffordablePriceEmphasis adlı bir CSS sınıfı oluşturdum.I've created a CSS class named AffordablePriceEmphasis that sets the background color to yellow. Tamamlanan RowDataBound olay işleyicisi aşağıdaki gibidir:The completed RowDataBound event handler follows:

Protected Sub HighlightCheapProducts_RowDataBound _
    (sender As Object, e As System.Web.UI.WebControls.GridViewRowEventArgs) _
    Handles HighlightCheapProducts.RowDataBound

    If e.Row.RowType = DataControlRowType.DataRow Then
        Dim product As Northwind.ProductsRow = _
            CType(CType(e.Row.DataItem, System.Data.DataRowView).Row, Northwind.ProductsRow)
        If Not product.IsUnitPriceNull() AndAlso product.UnitPrice < 10 Then
            e.Row.CssClass = "AffordablePriceEmphasis"
        End If
    End If
End Sub

En uygun maliyetli ürünlerin sarı vurgulanmış The Most Affordable Products are Highlighted Yellow

Şekil 11: en uygun maliyetli ürünler sarı renkle vurgulanır (tam boyutlu görüntüyü görüntülemek için tıklayın)Figure 11: The Most Affordable Products are Highlighted Yellow (Click to view full-size image)

ÖzetSummary

Bu öğreticide, denetime bağlı verilere göre GridView, DetailsView ve FormView biçimlerini nasıl biçimlentireceğiz.In this tutorial we saw how to format the GridView, DetailsView, and FormView based on the data bound to the control. Bunu gerçekleştirmek için, temel alınan verilerin, gerektiğinde bir biçimlendirme değişikliğine göre inceedildiği DataBound veya RowDataBound olayları için bir olay işleyicisi oluşturduk.To accomplish this we created an event handler for the DataBound or RowDataBound events, where the underlying data was examined along with a formatting change, if needed. Bir DetailsView veya FormView 'a bağlantılı verilere erişmek için, DataBound olay işleyicisindeki DataItem özelliğini kullanıyoruz. GridView için, her bir GridViewRow örneğinin DataItem özelliği, RowDataBound olay işleyicisinde bulunan bu satıra bağlanan verileri içerir.To access the data bound to a DetailsView or FormView, we use the DataItem property in the DataBound event handler; for a GridView, each GridViewRow instance's DataItem property contains the data bound to that row, which is available in the RowDataBound event handler.

Veri Web denetiminin biçimlendirmesini programlı olarak ayarlamaya yönelik sözdizimi, Web denetimine ve biçimlendirilecek verilerin nasıl görüntüleneceğini gösterir.The syntax for programmatically adjusting the data Web control's formatting depends upon the Web control and how the data to be formatted is displayed. DetailsView ve GridView denetimlerinde, satırlara ve hücrelere bir sıralı dizin tarafından erişilebilir.For DetailsView and GridView controls, the rows and cells can be accessed by an ordinal index. Şablonlar kullanan FormView için FindControl("controlID") yöntemi genellikle şablon içinden bir Web denetimi bulmak için kullanılır.For the FormView, which uses templates, the FindControl("controlID") method is commonly used to locate a Web control from within the template.

Sonraki öğreticide, GridView ve DetailsView ile şablonları kullanma bölümüne bakacağız.In the next tutorial we'll look at how to use templates with the GridView and DetailsView. Ayrıca, temel alınan verilere göre biçimlendirmeyi özelleştirmek için başka bir teknik de görüyoruz.Additionally, we'll see another technique for customizing the formatting based on the underlying data.

Programlamanın kutlu olsun!Happy Programming!

Yazar hakkındaAbout the Author

4GuysFromRolla.com 'in, Scott Mitchell, yedi ASP/ASP. net books ve 'in yazarı, 1998 sürümünden bu yana Microsoft Web teknolojileriyle çalışmaktadır.Scott Mitchell, author of seven ASP/ASP.NET books and founder of 4GuysFromRolla.com, has been working with Microsoft Web technologies since 1998. Scott bağımsız danışman, Trainer ve yazıcı olarak çalışıyor.Scott works as an independent consultant, trainer, and writer. En son kitabı, 24 saat içinde ASP.NET 2,0 kendi kendinize eğitimister.His latest book is Sams Teach Yourself ASP.NET 2.0 in 24 Hours. mitchell@4GuysFromRolla.comadresinden erişilebilir .He can be reached at mitchell@4GuysFromRolla.com. ya da blog aracılığıyla http://ScottOnWriting.NETbulabilirsiniz.or via his blog, which can be found at http://ScottOnWriting.NET.

Özel olarak teşekkürlerSpecial Thanks To

Bu öğretici serisi birçok yararlı gözden geçirenler tarafından incelendi.This tutorial series was reviewed by many helpful reviewers. Bu öğreticide lider gözden geçirenler E.R.Lead reviewers for this tutorial were E.R. Gilmore, dennıs Patterson ve Ramiz Cager.Gilmore, Dennis Patterson, and Dan Jagers. Yaklaşan MSDN makalelerimi gözden geçiriyor musunuz?Interested in reviewing my upcoming MSDN articles? Öyleyse, benimitchell@4GuysFromRolla.combir satır bırakın .If so, drop me a line at mitchell@4GuysFromRolla.com.