Ağustos 1020

RadGrid Sayfalama Sorunu

Yakın zamanda bir projemde karşılaştığım bir sorundan size bahsetmek istiyorum. Telerik kütüphenesinde gelen RadGrid sayfalama işlemi yapamıyordum. DataBind() işlemi sonucunda ilk sayfa sorunsuz şekilde geliyordu. Ancak diğer sayfalara geçmek istediğimde sadece beyaz bir ekran geliyordu. Sorunu ViewState ve OnNeedDataSource kullanarak çözdüm. Her sayfa geçisinde veriyi yeniden Bind ediyor. Çözüm örneği aşağıdaki gibidir: ASPX: <telerik:RadGrid ID="RadGrid1" runat="server" AllowPaging="true" PageSize="5" ShowGroupPanel="true" OnNeedDataSource="RadGrid1_NeedDataSource"> <MasterTableView CommandItemDisplay="Top"> </MasterTableView> <ClientSettings AllowDragToGroup="true" AllowColumnsReorder="true" > </ClientSettings> </telerik:RadGrid> <asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="Filter"/> CS: protected void RadGrid1_NeedDataSource(object source, GridNeedDataSourceEventArgs e) { if (ViewState["GridData"] != null) { RadGrid1.DataSource = ViewState["GridData"]; } } protected void Button1_Click(object sender, EventArgs e) { string connStr = "Data Source=MyData; Initial Catalog=NorthWind; User ID=***; Password=*****"; SqlConnection conn = new SqlConnection(connStr); SqlCommand cmd = new SqlCommand(); conn.Open(); SqlDataAdapter adp = new SqlDataAdapter("select * from Products", conn); DataTable dt = new DataTable(); adp.Fill(dt); ViewState["GridData"] = dt; if (ViewState["GridData"] != null) { RadGrid1.DataSource = ViewState["GridData"]; } RadGrid1.DataBind(); conn.Close(); } .csharpcode, .csharpcode pre { font-size: small; color: black; font-family: consolas, "Courier New", courier, monospace; background-color: #ffffff; /*white-space: pre;*/ } .csharpcode pre { margin: 0em; } .csharpcode .rem { color: #008000; } .csharpcode .kwrd { color: #0000ff; } .csharpcode .str { color: #006080; } .csharpcode .op { color: #0000c0; } .csharpcode .preproc { color: #cc6633; } .csharpcode .asp { background-color: #ffff00; } .csharpcode .html { color: #800000; } .csharpcode .attr { color: #ff0000; } .csharpcode .alt { background-color: #f4f4f4; width: 100%; margin: 0em; } .csharpcode .lnum { color: #606060; } .csharpcode, .csharpcode pre { font-size: small; color: black; font-family: consolas, "Courier New", courier, monospace; background-color: #ffffff; /*white-space: pre;*/ } .csharpcode pre { margin: 0em; } .csharpcode .rem { color: #008000; } .csharpcode .kwrd { color: #0000ff; } .csharpcode .str { color: #006080; } .csharpcode .op { color: #0000c0; } .csharpcode .preproc { color: #cc6633; } .csharpcode .asp { background-color: #ffff00; } .csharpcode .html { color: #800000; } .csharpcode .attr { color: #ff0000; } .csharpcode .alt { background-color: #f4f4f4; width: 100%; margin: 0em; } .csharpcode .lnum { color: #606060; } .csharpcode, .csharpcode pre { font-size: small; color: black; font-family: consolas, "Courier New", courier, monospace; background-color: #ffffff; /*white-space: pre;*/ } .csharpcode pre { margin: 0em; } .csharpcode .rem { color: #008000; } .csharpcode .kwrd { color: #0000ff; } .csharpcode .str { color: #006080; } .csharpcode .op { color: #0000c0; } .csharpcode .preproc { color: #cc6633; } .csharpcode .asp { background-color: #ffff00; } .csharpcode .html { color: #800000; } .csharpcode .attr { color: #ff0000; } .csharpcode .alt { background-color: #f4f4f4; width: 100%; margin: 0em; } .csharpcode .lnum { color: #606060; } Tags: , , | Categories: Telerik | ASP.NET | C# | .NET
Silverlight, web tabanlı uygulamaların hazırlanabilmesi için Microsoft tarafından üretilen bir teknoloji platformudur. Silverlight ile ilgili daha detaylı bilgi buradan alınabilir. Web tabanlı File Upload (Dosya yükleme) ile herhangi bir bilgisayar üzerinden Web sunucusuna dosya yüklenebilir. Böylece yüklenen dosya İnternet üzerinden erişilebilir hale gelecektir.   Öncelikle Visual Studio 2010 açılarak New Project (Yeni Proje) seçilir. Gelen ekrandan Visual C# altındaki Silverlight sekmesi seçilir. Yanda beliren Silverlight Application (Silverlight Uygulaması) seçilir. Alltaki kısımda Name (İsim) karşısına bir isim verilerek OK (Tamam) düğmesine tıklanır. Gelen ekranda OK (Tamam) düğmesine tıklanır. Oluşturulan projenin "Solution Explorer" kısmından, proje_ismi.Web satırına sağ tıklanarak Properties (Özellikler) satırına tıklanır. Açılan pencereden Web sekmesi seçilerek, Servers (Sunucular) kısmındaki Specific Port (Özel Port) seçilerek 1336 yazılır. Burada belirli bir port numarası verilmesinin nedeni; Visual Studio’nun web servisini eklerken localhost (yerel sunucu) adresini kullanmasıdır. Tek bir port adresi vererek adresin değişmesini önleyip Web servisi projeye eklenir. Daha sonra araç çubuğundan Save(Kaydet) düğmesine tıklanarak Özellikler sayfası kapatılır.   Tekrar  Solution Explorer kısmından, proje_ismi.Web satırına sağ tıklanarak Add (Ekle) -> New Item (Yeni Nesne) seçilir. Gelen pencerede Web Service (Web Servisi) seçilerek Name (İsim) kısmı doldurulur. Oluşturulan Web sayfası için aşağıdaki kodlar yazılır. Dosyanın yükleneceği yer kod içinde bulunan Yükleme Dizini kısmına yazılmalıdır.  (Örnek:”C:\\”) using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Services; using System.IO; namespace FileUpload.Web { [WebService(Namespace = http://tempuri.org/)] [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] [System.ComponentModel.ToolboxItem(false)] public class uploadService : System.Web.Services.WebService { [WebMethod] public string UploadFiles(string strFileName, byte[] byFile, string strFileNo) { try { if (byFile.Length > 0) { string strFilePath = "C:\\" + strFileName; System.IO.FileStream fs = new FileStream(strFilePath, FileMode.Create, FileAccess.Write); fs.Write(byFile, 0, byFile.Length); fs.Close(); return strFileNo; } else { return ""; } } catch { return ""; } } } } .csharpcode, .csharpcode pre { font-size: small; color: black; font-family: consolas, "Courier New", courier, monospace; background-color: #ffffff; /*white-space: pre;*/ } .csharpcode pre { margin: 0em; } .csharpcode .rem { color: #008000; } .csharpcode .kwrd { color: #0000ff; } .csharpcode .str { color: #006080; } .csharpcode .op { color: #0000c0; } .csharpcode .preproc { color: #cc6633; } .csharpcode .asp { background-color: #ffff00; } .csharpcode .html { color: #800000; } .csharpcode .attr { color: #ff0000; } .csharpcode .alt { background-color: #f4f4f4; width: 100%; margin: 0em; } .csharpcode .lnum { color: #606060; } Solution Explorer bölümünden FileUpload satırına sağ tıklanarak Add (Ekle)-> New Item (Yeni Nesne) seçilir. Açılan pencerede Class (Sınıf) seçilerek, Name (İsim) kısmı doldurulur. OK (Tamam) a tıklanır. Oluşturulan sınıfın kodları aşağıdaki gibidir. using System; using System.Net; using System.Windows; using System.Windows.Controls; using System.Windows.Documents; using System.Windows.Ink; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Animation; using System.Windows.Shapes; using System.IO; namespace FileUpload { public class FilesClass { public FilesClass() { } string strStatus = ""; string strNo = ""; FileInfo strFileName = null; public string PropNumber { get { return strNo; } set { strNo = value; } } public FileInfo PropFileName { get { return strFileName; } set { strFileName = value; } } public string PropStatus { get { return strStatus; } set { strStatus = value; } } } } .csharpcode, .csharpcode pre { font-size: small; color: black; font-family: consolas, "Courier New", courier, monospace; background-color: #ffffff; /*white-space: pre;*/ } .csharpcode pre { margin: 0em; } .csharpcode .rem { color: #008000; } .csharpcode .kwrd { color: #0000ff; } .csharpcode .str { color: #006080; } .csharpcode .op { color: #0000c0; } .csharpcode .preproc { color: #cc6633; } .csharpcode .asp { background-color: #ffff00; } .csharpcode .html { color: #800000; } .csharpcode .attr { color: #ff0000; } .csharpcode .alt { background-color: #f4f4f4; width: 100%; margin: 0em; } .csharpcode .lnum { color: #606060; } Referans dosyasını projeye eklemeden önce Solution Explorer(Çözüm Gezgini) de Solution File Upload(Çözüm Dosyası Yükle) satırına sağ tıklanarak Build seçeneği tıklanır. uploadService.asmx dosyasını projeye eklemek için Çözüm Gezgini'nde FileUpload satırına sağ tıklanır. Add Service Referance (Servis Referansı Ekle)  seçilir. Gelen ekranda Discover (Keşfet) düğmesine tıklanır ve referans dosyası çıkarılır.   Daha sonra Go düğmesine tıklanarak referans eklenir. Alttaki Name (İsim) kısmı doldurulur. OK (Tamam)  denilerek ekran kapatılır. Çözüm Gezgini'nde MainPage.xaml açılır. XMAL sekmesindeki kodların Grid "tag"ları arasına aşağıdaki kodlar yazılır. Bu kodlarla Gözat ve Yükle adında iki düğme oluşturulacaktır. <Grid x:Name="LayoutRoot" Background="White" Width="400" Height="50"> <Button Content="Gözat" Height="20" Width="150" Click="Button_Click" Margin="10,0,10,10" VerticalAlignment="Bottom" d:LayoutOverrides="Width,Height" HorizontalAlignment="Left" Background="#FF2770AF"></Button> <Button Content="Yükle" Height="20" Width="150" Click="Button_Click_1" Margin="20,0,10,10" VerticalAlignment="Bottom" d:LayoutOverrides="Width, Height" HorizontalAlignment="Right" Background="#FF2770AF"></Button> </Grid> .csharpcode, .csharpcode pre { font-size: small; color: black; font-family: consolas, "Courier New", courier, monospace; background-color: #ffffff; /*white-space: pre;*/ } .csharpcode pre { margin: 0em; } .csharpcode .rem { color: #008000; } .csharpcode .kwrd { color: #0000ff; } .csharpcode .str { color: #006080; } .csharpcode .op { color: #0000c0; } .csharpcode .preproc { color: #cc6633; } .csharpcode .asp { background-color: #ffff00; } .csharpcode .html { color: #800000; } .csharpcode .attr { color: #ff0000; } .csharpcode .alt { background-color: #f4f4f4; width: 100%; margin: 0em; } .csharpcode .lnum { color: #606060; } Design (Tasarım) kısmında oluşan Gözat ve Yükle düğmelerinden Gözat düğmesine tıklanarak MainPage.xaml.cs dosyası açılır. Burda Gözat düğmesi için otomatik olarak event (olay) oluşturulmuştur. Oluşturulan olayın üst kısmına aşağıdaki kodlar yazılır. private int iFileCount = 0; private List<FilesClass> fl = new List<FilesClass>(); .csharpcode, .csharpcode pre { font-size: small; color: black; font-family: consolas, "Courier New", courier, monospace; background-color: #ffffff; /*white-space: pre;*/ } .csharpcode pre { margin: 0em; } .csharpcode .rem { color: #008000; } .csharpcode .kwrd { color: #0000ff; } .csharpcode .str { color: #006080; } .csharpcode .op { color: #0000c0; } .csharpcode .preproc { color: #cc6633; } .csharpcode .asp { background-color: #ffff00; } .csharpcode .html { color: #800000; } .csharpcode .attr { color: #ff0000; } .csharpcode .alt { background-color: #f4f4f4; width: 100%; margin: 0em; } .csharpcode .lnum { color: #606060; } Oluşturulan bu olayın içi aşağıdaki gibi doldurulur. private void Button_Click(object sender, RoutedEventArgs e) { OpenFileDialog op = new OpenFileDialog(); op.ShowDialog(); if (op.File != null && op.File.Name != "") { if (op.File.Length < 1048576) { FilesClass obj = new FilesClass(); obj.PropFileName = op.File; obj.PropNumber = iFileCount.ToString(); fl.Add(obj); iFileCount++; } else { MessageBox.Show("En büyük dosya boyutu 1 MB"); } } else { MessageBox.Show("Dosya seçiniz."); } } .csharpcode, .csharpcode pre { font-size: small; color: black; font-family: consolas, "Courier New", courier, monospace; background-color: #ffffff; /*white-space: pre;*/ } .csharpcode pre { margin: 0em; } .csharpcode .rem { color: #008000; } .csharpcode .kwrd { color: #0000ff; } .csharpcode .str { color: #006080; } .csharpcode .op { color: #0000c0; } .csharpcode .preproc { color: #cc6633; } .csharpcode .asp { background-color: #ffff00; } .csharpcode .html { color: #800000; } .csharpcode .attr { color: #ff0000; } .csharpcode .alt { background-color: #f4f4f4; width: 100%; margin: 0em; } .csharpcode .lnum { color: #606060; } Tekrar MainPage.xaml sayfasına dönülerek Design (Tasarım) sekmesine tıklanır. “Yükle” düğmesine tıklanarak MainPage.xaml.cs dosyasında Yükle için olay oluşturulur. Yükle düğmesi için oluşturulan olayın içi aşağıdaki gibi doldurulur. private void Button_Click_1(object sender, RoutedEventArgs e) { if (fl.Count > 0) { for (int count = 0; count < fl.Count; count++) { uploadService.uploadServiceSoapClient x = new uploadService.uploadServiceSoapClient(); x.UploadFilesCompleted += new EventHandler<uploadService.UploadFilesCompletedEventArgs> (UploadFileComplted); FilesClass obj = (FilesClass)fl[count]; System.IO.FileStream str = obj.PropFileName.OpenRead(); byte[] by = new byte[str.Length]; str.Read(by, 0, by.Length); str.Close(); x.UploadFilesAsync(obj.PropFileName.Name, by, obj.PropNumber); } } } .csharpcode, .csharpcode pre { font-size: small; color: black; font-family: consolas, "Courier New", courier, monospace; background-color: #ffffff; /*white-space: pre;*/ } .csharpcode pre { margin: 0em; } .csharpcode .rem { color: #008000; } .csharpcode .kwrd { color: #0000ff; } .csharpcode .str { color: #006080; } .csharpcode .op { color: #0000c0; } .csharpcode .preproc { color: #cc6633; } .csharpcode .asp { background-color: #ffff00; } .csharpcode .html { color: #800000; } .csharpcode .attr { color: #ff0000; } .csharpcode .alt { background-color: #f4f4f4; width: 100%; margin: 0em; } .csharpcode .lnum { color: #606060; } Upload (Yükleme) işleminin başarılı biçimde bittiğini belirten mesaj kutusunu çıkaran kod için “Yükle” düğmesi için yazılan kodun altına aşağıdaki kod yazılır. private void UploadFileComplted(object sender, uploadService.UploadFilesCompletedEventArgs e) { if (e.Result != "") { MessageBox.Show("Dosya Yüklendi"); } } .csharpcode, .csharpcode pre { font-size: small; color: black; font-family: consolas, "Courier New", courier, monospace; background-color: #ffffff; /*white-space: pre;*/ } .csharpcode pre { margin: 0em; } .csharpcode .rem { color: #008000; } .csharpcode .kwrd { color: #0000ff; } .csharpcode .str { color: #006080; } .csharpcode .op { color: #0000c0; } .csharpcode .preproc { color: #cc6633; } .csharpcode .asp { background-color: #ffff00; } .csharpcode .html { color: #800000; } .csharpcode .attr { color: #ff0000; } .csharpcode .alt { background-color: #f4f4f4; width: 100%; margin: 0em; } .csharpcode .lnum { color: #606060; } Dosyalar araç çubuğundaki SaveAll (Hepsini Kaydet) ile kayıt edilir ve yine araç çubuğundaki StartDebuging (İşlemeye Başla) simgesine tıklanarak yazılan proje çalıştırılır. Projenin son görüntüsü aşağıdaki gibidir. Dosya yüklemek için Gözat düğmesine tıklanarak yüklenecek dosya seçilir. Dosya seçildikten sonra Yükle düğmesine tıklanarak kodda belirtilen yere dosya yükleme işlemi gerçekleştirilmiş olur.   Bu dokuman Erk Dursun tarafından hazırlanmıştır. Alıntı Tags: , , , , | Categories: .NET | C# | ASP.NET | Silverlight
ASP.NET Framework 3.5 ile gelen DataPager (Veri Sayfalayıcı) kontrolü; Gridview (Izgara Görünümü), ListView (Liste Görünüm) gibi  veri bağlama denetimlerini sayfalandırmak için kullanılan bir kontroldür. DataPager (Veri Sayfalayıcı) kontrolü sayfalandırma şeklinin ve bağlantılarının kişiselleştirilmesine olanak sağlar. Bu kontrolde kullanılabilecek öznitelikler; PagedControlID (Sayfalanacak Kontrolün Kimliği): Sayfalandırılacak kontrolün kimliğini belirtir. PageSize (Sayfa Boyutu): Her sayfada gösterilecek veri sayısını tanımlamak için kullanılır. Fields (Alanlar): Kontroldeki sayfalandırma alanını bildiren nesneleri içinde barındırır. NextPreviousPagerField (İleri Geri Sayfalama Alanı): Sayfalandırma alanına; ilk, ileri, geri, son şeklinde bağlantılara eklenmesini sağlar. NumericPagerField (Numaralandırlılmış Sayfalama Alanı): Sayfalandırma alanında, sayfalara sayfa numaralarıyla bağlantı verir. Aktif olan sayfanın bağlantısı pasiftir. TemplatePagerField (Sayfalama Alanı Şablonu): Yazılımcının, istenilen şekilde sayfalama ara yüzü tasarlamasına olanak sağlar. Uygulama Bu uygulamada, DataPager (Veri Sayfalayıcı) örnek SQL veritabanı üzerinde çalışan ListView (Liste Görünümü) kontrolünü sayfalandırmak için kullanılacaktır. Uygulamada kullanılacak örnek veritabanının yapısı şu şekildedir; Sayfalandırılacak ListView (Liste Görünümü) kontrolü aşağıdaki gibidir. <asp:ListView ID="OgrencilerListe" DataSourceID="OgrencilerData" runat="server"> <ItemTemplate> isim: <asp:Label ID="isimLablel" runat="server" Text='<%# Eval("isim") %>'/> <br /> numara: <asp:Label ID="numLabel" runat="server" Text='<%# Eval("numara") %>'/> <br /> <br /> </ItemTemplate> <LayoutTemplate> <div ID="itemPlaceholderContainer" runat="server" style=""> <span ID="itemPlaceholder" runat="server"> </span> </div> </LayoutTemplate> </asp:ListView> OgrencilerListe kimlikli liste kontrolünü ilk sayfa, sayfa numaraları ve son sayfa şeklinde sayfalama yapacak ve ekrandaki kayıtlar hakkında bilgi verecek DataPager (Veri Sayfalayıcı) kontrolü aşağıdaki gibidir. Her sayfadaki veri sayısı PageSize (Sayfa Boyutu) ile beş olarak tanımlanmış olup sayfalanacak veri PagedControlID (Sayfalanacak Kontrolün Kimliği) ile belirtilmiştir. <asp:DataPager ID="OgrencilerSayfalayici" PagedControlID="OgrencilerListe" runat="server" PageSize="5"> <Fields> <asp:NextPreviousPagerField ButtonType="Button" ShowFirstPageButton="True" ShowNextPageButton="False" ShowPreviousPageButton="False" ShowLastPageButton="False" /> <asp:NumericPagerField /> <asp:NextPreviousPagerField ButtonType="Button" ShowFirstPageButton="False" ShowNextPageButton="False" ShowPreviousPageButton="False" ShowLastPageButton="True" /> <asp:TemplatePagerField> <PagerTemplate> <asp:Label ID="ilkData" runat="server" Text="<%# Container.StartRowIndex + 1 %>" /> ile <asp:Label ID="sonData" runat="server" Text="&lt;%# ((Container.StartRowIndex + Container.PageSize > Container.TotalRowCount) ? (Container.TotalRowCount) : Container.StartRowIndex + Container.PageSize)) %>" /> arası kayıtlar gösterilmektedir. </PagerTemplate> </asp:TemplatePagerField> </Fields> </asp:DataPager> Veritabanı bağlantısı ise şu şekildedir; <asp:SqlDataSource ID="OgrencilerData" runat="server" ConnectionString="Provider=SQLOLEDB.1;Data Source=.\SQLEXPRESS; Integrated Security=SSPI; InitialCatalog=OrnekDatabase" ProviderName="System.Data.OleDb" SelectCommand="SELECT [isim], [numara] FROM [OrnekTablo]"> </asp:SqlDataSource> .csharpcode, .csharpcode pre { font-size: small; color: black; font-family: consolas, "Courier New", courier, monospace; background-color: #ffffff; /*white-space: pre;*/ } .csharpcode pre { margin: 0em; } .csharpcode .rem { color: #008000; } .csharpcode .kwrd { color: #0000ff; } .csharpcode .str { color: #006080; } .csharpcode .op { color: #0000c0; } .csharpcode .preproc { color: #cc6633; } .csharpcode .asp { background-color: #ffff00; } .csharpcode .html { color: #800000; } .csharpcode .attr { color: #ff0000; } .csharpcode .alt { background-color: #f4f4f4; width: 100%; margin: 0em; } .csharpcode .lnum { color: #606060; }     Bu yazı M. Cem Tüver tarafından hazırlanmıştır. Tags: , , , | Categories: .NET | C# | ASP.NET
ASP.NET projesi yapıyorsak ve veritabanından çektiğimiz verileri  istemciye gösteriyorsak, bunun için en çok kullandığımız yöntem, bir gridview içerinde göstermedir. Verilerimizi çektik, ekranda gösterdik, ama bu bize yetmedi. Kullanıcının bunlardan sadece ve sadece birini seçmesini istiyoruz. Ama kullanıcıya da güvenmeliyiz, ekstra kontroller koymakla uğraşıp, projenin bitişini uzatmamalıyız. Bu yüzden Radio Button kullanmak en mantıklısı. Ancak, radio button’da şöyle bir sorunumuz var. Gridview içerisindeyken, oluşturulan tüm radio buttonlar (GroupName propertyleri aynı olsa dahi) tarayıcıda aynı ismi almakta. Bu yüzden bizim oluşturduğumuz grup işe yaramamkta. Bu yüzden, radio button ile seçim yapmamıza rağmen 5 maddelik bir gridview’in satırlarının hepsini seçebiliyoruz, ki bu bizim istediğimiz bir durum değil. Bu durumu gidermenin 2 yöntemi var: 1.si .aspx sayfasında gridview’in her satırı için elle <INPUT type=radio name="radio"> .csharpcode, .csharpcode pre { font-size: small; color: black; font-family: consolas, "Courier New", courier, monospace; background-color: #ffffff; /*white-space: pre;*/ } .csharpcode pre { margin: 0em; } .csharpcode .rem { color: #008000; } .csharpcode .kwrd { color: #0000ff; } .csharpcode .str { color: #006080; } .csharpcode .op { color: #0000c0; } .csharpcode .preproc { color: #cc6633; } .csharpcode .asp { background-color: #ffff00; } .csharpcode .html { color: #800000; } .csharpcode .attr { color: #ff0000; } .csharpcode .alt { background-color: #f4f4f4; width: 100%; margin: 0em; } .csharpcode .lnum { color: #606060; } şeklinde kodlar kullanarak gridview oluşturmak. Ancak bu tipte yöntemle oluşturulan radio button’da PostBack işlemi sırasında hangi satırın seçili olduğunu bulabilmek için kullanmamız gereken Checked propertisi, tanımlanmış durumda değil. Checked propertisini tanımlamak gerekli. Ama bu tanımlama işlemi kod yazanı gereksiz yere zorlucak bi işlem olarak görüyorum. Onun yerine 2. yöntemi kullanarak işlemlerini hızlandırabilir. 2. yöntemde input eklemek yerine, gridview in en başta yer alan sütununa Literal nesnesi koyuyoruz. OnRowCreated işlemi sırasında bu Literal nesnesini alıp Literal item = (Literal)e.Row.FindControl("radio"); item.Text = string.Format("<input type=\"radio\"name=\"radio\"id=\"radio{0}\" value=\"{0}\" runat=\"server\"/>",e.Row.RowIndex); .csharpcode, .csharpcode pre { font-size: small; color: black; font-family: consolas, "Courier New", courier, monospace; background-color: #ffffff; /*white-space: pre;*/ } .csharpcode pre { margin: 0em; } .csharpcode .rem { color: #008000; } .csharpcode .kwrd { color: #0000ff; } .csharpcode .str { color: #006080; } .csharpcode .op { color: #0000c0; } .csharpcode .preproc { color: #cc6633; } .csharpcode .asp { background-color: #ffff00; } .csharpcode .html { color: #800000; } .csharpcode .attr { color: #ff0000; } .csharpcode .alt { background-color: #f4f4f4; width: 100%; margin: 0em; } .csharpcode .lnum { color: #606060; } şeklindeki gibi Literal’in text propertisine inputumuzu veriyoruz. Input bu şekilde verildikten sonra, sıra hangi satırın seçili olduğunu tespit etmeye geliyor. Bu işlem de: public int GridViewSelectedIndex { get { if(string.IsNullOrEmpty(Request.Form["radio"])) return -1; else return Convert.ToInt32(Request.Form["radio"]); } } .csharpcode, .csharpcode pre { font-size: small; color: black; font-family: consolas, "Courier New", courier, monospace; background-color: #ffffff; /*white-space: pre;*/ } .csharpcode pre { margin: 0em; } .csharpcode .rem { color: #008000; } .csharpcode .kwrd { color: #0000ff; } .csharpcode .str { color: #006080; } .csharpcode .op { color: #0000c0; } .csharpcode .preproc { color: #cc6633; } .csharpcode .asp { background-color: #ffff00; } .csharpcode .html { color: #800000; } .csharpcode .attr { color: #ff0000; } .csharpcode .alt { background-color: #f4f4f4; width: 100%; margin: 0em; } .csharpcode .lnum { color: #606060; } kod parçaçcığıyla halledebiliyoruz. Bundan sonra GridViewSelectedIndex bizim gridview içerisinde yer alan satırlardan hangisini seçtiğimizi gösterir hale geliyor. Bundan sonra bunu ister DataKeylerle, ister CommandNamelerle kullanabiliriz. Tags: , , | Categories: ASP.NET | C#