28 Mayıs 2012 Pazartesi

Grid Uzerinden Veri Girisi ve RadInputManager

Merhaba.

Grid üzerinden giriş yapılması gereken durumlarda, grid üzerinde RadNumericText box gibi kontroller kullandığımızda, sayfanın boyutu – script yükü - ister istemez artıyor.  Bu artış sayfanın yüklenmesini geciktiriyor.  RadInputManager tanımlayarak, RadNumericText yerine nispeten hafif bir kontrol olan bildiğimiz Asp:TextBox kullanıp, çalışma zamanında Numerik Text Box’ın ilgili özellik (ayarlarını)  asp:text box’a atıyoruz.  
Benim çalıştığım örnekte sayfanın boyutu %35 oranında azaldı, sayfanın yüklenme süresi ise gözle görülür şekilde hızlandı.

İlgili Makale


Örnek Kullanım  (TFS Changeset 120038)

Eski Hali
<telerik:GridTemplateColumn UniqueName="TutarBunyeColumn" SortExpression="TutarBunye" HeaderText="<%$ Resources:SabitVeri, ItemBunyedeKalacak %>">
                                            <ItemTemplate>
                                                <telerik:RadNumericTextBox ID="TutarBunyeTextBox" runat="server" 
                                                             EmptyMessage="<%$ Resources:SabitVeri, ItemBunyedeKalacak %>" 
                                                             DbValue='<%# ((System.Data.DataRowView)Container.DataItem)["TutarBunye"]  %>' Type="Number" MaxLength="13" Width="50px"  >
                                                    <NumberFormat AllowRounding="false" DecimalDigits="2" />
                                                    <IncrementSettings InterceptMouseWheel="false" />
                                                </telerik:RadNumericTextBox>
                                            </ItemTemplate>
                                        </telerik:GridTemplateColumn>

RadInputManager Kullanımı

<![if !supportLists]>1.       <![endif]>RadInputManager Tanımla
<asp:Content ID="ArdiyesizGirisTarihiListesiContent" ContentPlaceHolderID="MainContent" runat="Server">
    <telerik:RadInputManager ID="RadInputManager1" runat="server">
        <telerik:NumericTextBoxSetting BehaviorID="NumericBehavior1" InitializeOnClient="false" Type="Number" DecimalDigits="2" AllowRounding="false"  >
        </telerik:NumericTextBoxSetting>
    </telerik:RadInputManager>
    <table border="0" cellpadding="0" cellspacing="0" width="980">
       <tr>
 
<![if !supportLists]>2.       <![endif]>Grid OnItemCreated Olayını Tanımla
 <telerik:RadGrid  OnItemCreated="PazarlamaArdiyeHesabiGridView_ItemCreated">
 
<![if !supportLists]>3.       <![endif]>Grid Üzerinde Column Olarak ASP TextBox  Tanımla
<telerik:GridTemplateColumn UniqueName="TutarBunyeColumn" SortExpression="TutarBunye" HeaderText="<%$ Resources:SabitVeri, ItemBunyedeKalacak %>">
                                            <ItemTemplate>
                                                <asp:textbox  width="50px" v id="TutarBunyeTextBox" runat="server" text='<%# Bind("TutarBunye") %>'></asp:textbox>
                                            </ItemTemplate>
                                        </telerik:GridTemplateColumn>
<![if !supportLists]>4.       <![endif]>OnItemCreated Metodunu Yaz

protected void PazarlamaArdiyeHesabiGridView_ItemCreated(object sender, GridItemEventArgs e)
{
        if (e.Item is GridDataItem)
        {
            GridDataItem item = e.Item as GridDataItem;
            NumericTextBoxSetting numericSetting = (NumericTextBoxSetting)RadInputManager1.GetSettingByBehaviorID("NumericBehavior1");
 
            TextBox tutarBunyeTextBox = item["TutarBunyeColumn"].FindControl("TutarBunyeTextBox"as TextBox;
            if (tutarBunyeTextBox != null)
                numericSetting.TargetControls.Add(new TargetInput(tutarBunyeTextBox.UniqueID, true));
 
        }
 }