16 Şubat 2011 Çarşamba

DevExpress Gridview içinde buton ile seçim yaptırmak


Eğer şu şekil ASPxGridView içinde butonlardan değer almanız gerekirse işte yapılacaklar...

1- Grid için bir object data source yapıyoruz. Normal şekilde kolonları belirliyoruz.

KeyField name alanını doldurmayı unutmadan örnekteki gibi hazırlığı yapıyoruz.


<dx:ASPxGridView ID="gvDegerlendirmeFormu" runat="server" KeyFieldName="Id" AutoGenerateColumns="False"DataSourceID="odsSoruYanitDoldur" OnCustomErrorText="gvDegerlendirmeFormu_CustomErrorText" OnHtmlDataCellPrepared="gvDegerlendirmeFormu_HtmlDataCellPrepared">

<SettingsText CommandCancel="İPTAL" CommandEdit="DEĞERLENDİR" CommandUpdate="TAMAM" />
<SettingsPager Mode="ShowAllRecords" />
<Columns>
<dx:GridViewCommandColumn VisibleIndex="0" Name="DegerlendirButonu">
<EditButton Visible="True"></EditButton>
</dx:GridViewCommandColumn>

<dx:GridViewDataTextColumn FieldName="Id" VisibleIndex="1" Visible="false">
</dx:GridViewDataTextColumn>

<dx:GridViewDataTextColumn FieldName="BaslikAdi" VisibleIndex="2" GroupIndex="0"SortIndex="0" SortOrder="Ascending" Caption=" ">
<EditFormSettings Visible="False" />
<EditFormSettings Visible="False"></EditFormSettings>
</dx:GridViewDataTextColumn>
</Columns>
<Templates>
<EditForm>

<div style="padding: 4px 4px 3px 4px">
<dx:ASPxPageControl runat="server" ID="pageControl" Width="100%" Height="40px">
<TabPages>
<dx:TabPage Text="DETAYLAR" Visible="true">
<ContentCollection>
<dx:ContentControl ID="ContentControl1" runat="server">

<dx:ASPxLabel runat="server" ID="lbBaslik" Text='<%# Eval("BaslikAdi")%>' Width="100%"CssClass="baslik">
</dx:ASPxLabel>

<dx:ASPxLabel runat="server" ID="lbSoruAdi" Text='<%# Eval("SoruAdi") %>' Width="100%"CssClass="baslik">
</dx:ASPxLabel>

<asp:Button runat="server" ID="butBaslik1" Text='<%# Eval("Secenek1")%>' Width="800px"CssClass="label1" OnClick="butBaslik1_Click"></asp:Button>

<asp:Button runat="server" ID="butBaslik2" Text='<%# Eval("Secenek2")%>' Width="800px"CssClass="label2" OnClick="butBaslik2_Click"></asp:Button>

<asp:Button runat="server" ID="butBaslik3" Text='<%# Eval("Secenek3")%>' Width="800px"CssClass="label3" OnClick="butBaslik3_Click"></asp:Button>

<asp:Button runat="server" ID="butBaslik4" Text='<%# Eval("Secenek4")%>' Width="800px"CssClass="label4" OnClick="butBaslik4_Click"></asp:Button>

Yorum :<asp:TextBox runat="server" ID="txtVidi" Width="800px" CssClass="label5" OnTextChanged="TextBox1_TextChanged">

</asp:TextBox>
</dx:ContentControl>
</ContentCollection></dx:TabPage></TabPages></dx:ASPxPageControl>
</div></EditForm></Templates>

2- ContentControl içine butonları yerleştiriyoruz

3- Butonların _Click eventini yakalıyoruz.

Ben aşağıda sessiondan aldığım ve gridi doldurmakta kullandıgım SoruCevapGridNesnesi nesnelerinin tümü arasında dolanıp, hangi nesnenin tuşuna basıldığını yakalamak için gelen butonun text'inden yararlandım. Siz daha efektif bir yol bulabilirsiniz. Bende en iyi çözüm bu oluyordu.

protected void butBaslik1_Click(object sender, EventArgs e)
{
SoruCevapGridNesnesi gonderilecekNesne = new SoruCevapGridNesnesi();

Button deneme = (Button)sender;

ArrayList personelinNotlari = new ArrayList();

personelinNotlari = (ArrayList)Session["PersonelPuanlari"];

foreach
{
if (deneme.Text == scNesnem.Secenek1)
{
gonderilecekNesne = scNesnem;
}
}(SoruCevapGridNesnesi scNesnem in personelinNotlari)gvDegerlendirmeFormu.CancelEdit();
gvDegerlendirmeFormu.ExpandRow(gonderilecekNesne.SoruId - 1);
}




Hiç yorum yok:

Yorum Gönder