الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

هل يمكن عمل عامود من الdropdownlist في Datagrid

مغلق
بدأه @areej@ في 9 يناير 2005 · 2 رد · 586 مشاهدة · في ASP.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ورحمة الله

* انا عندي قاعدة بيانات في الsql server

* ادخل فيها بعض البيانات التي تكون عبارة عن ارقام الindex للdropdownlist

* عند عرض التقارير datagrid اريد عرض قيمة الdropdownlist وليس الindex تعبه ؟؟؟؟؟؟

* اريد عمل edit في نفس الdata grid يعني ماينقلني لصفحة تانيه .... عملتها ولكن

حكاية الdropdownlist ايضا كيف اضيف عامود يكون عبارة عن قائمة ؟؟؟؟

جننتني الحكاية دي ياريت تساعدوني فيها :wacko:

#2

جهازي الان غير مثبت عليه بيئة الدوت نت و لكن سأساعدك ببعض الأفكار ..

اولا يجب استخدام مثلا DataGrid كالتالي :

<asp : DataGrid id="dg" runat="server" DataKeyField="id" OnitemCommand="selectEvent">
 <columns>
  <asp:TemplateColumn>
   <ItemTemplate>
      <asp:DropDownList id="dl" runat="server" />   
<asp:LinkButton Text="bindMe" CommandName="select" runat="server" />
   </ItemTemplate>
 </asp:TemplateColumn>
 </columns>
</asp:DataGrid>
[code]

  طبعا هناك اجرائية تقوم بربط ال DataGrid و بها حدث يتم تنفيذه عند اختيار اي عنصر من نوع CommandButton و اسم الحدث selectEvent .

 [code]
 private void page_load()
   {
    bindGrid();
  }

 ////////
 private void bindGrid()
  {
  // binding code here
  dg.DataSource=reader;
  dg.DataBind();
 }

 private void selectEvent(Object source, DataGridCommandEventArgs e)
  {
    int fldID=(int)dg.DataKeys(e.Item.ItemIndex);
    // binding the dropdownlist here
     SQL="Select * from Tbl Where fld=" + fldID;
    // connection + command + reader
    dl.DataSource=reader;
   dl.DataBind(); 
  //close reader n connection
  }

لم أجربها حقيقة ولكنها فكرة ربما تنجح و هناك طريقة باستخدام ال DataView دون اللجوء لحدث مبدأها التالي :

//vb.net 

sub bindDg()

Dim da As OleDbDataAdapter
 prov="Provider=Microsoft.Jet.OleDb.4.0;Data Source=" & Server.MapPath("db.mdb")
 SQL="SELECT * FROM Categories"
   cn = new OleDbConnection(prov)
   da = new OleDbDataAdapter(SQL,cn)
 ds = new DataSet
 da.Fill(ds,"Categories")
 da.SelectCommand = new OleDbCommand("Select * From threads",cn)
 da.Fill(ds,"threads")
 dv=ds.Tables("threads").DefaultView

 dg.DataSource=ds.Tables("Categories")
 dg.DataBind()

end sub

Function BindDropList(catID As Integer) As DataView
 dv.RowFilter="catID=" & catID
 Return dv
End Function
////////////////////////////////////






<asp : DataGrid id="dg" runat="server" DataKeyField="id" OnitemCommand="selectEvent">
 <columns>
  <asp:TemplateColumn>
   <ItemTemplate>
      <asp:DropDownList id="dl" runat="server" DataSource='<%# BindDropList(DataBinder.Eval(Container.DataItem,"id"))%>'/>   
   </ItemTemplate>
 </asp:TemplateColumn>
 </columns>
</asp:DataGrid>

اعتقد ان الطريقة الثانية هي الأفضل :)

حظا موفقا

You can fly while you can touch the sky

#3

في طريقة سهلة توفرها شركة ComponentOne

عن طريق منتج لها اسمه ComponentOne ASP.net Studio

فيه كل ما لذ وطاب بهذا الخصوص

هذا الموضوع مغلق.

مواضيع مشابهة