मेरे पास एक ग्रिडव्यू है जिसमें प्रत्येक पंक्ति में ड्रॉपडाउन सूची होती है। मैं गतिशील रूप से हर ड्रॉपडाउन सूची को बांधना चाहता हूं। क्या कोई मुझे बता सकता है कि मैं इसे कैसे कर सकता हूं। अग्रिमग्रिडव्यू में ड्रॉपडाउन सूची कैसे बांधें?
उत्तर
यदि आप टेम्पलेट कॉलम का उपयोग कर रहे हैं तो आप डेटा-बाध्यकारी अभिव्यक्तियों का उपयोग करके मार्क-अप से अपने ड्रॉप-डाउन को बाध्य कर सकते हैं। उदाहरण के लिए,
<asp:TemplateField HeaderText="XYZ">
<ItemTemplate>
<asp:DropDownList runat="server" ID="MyDD" DataSourceId="MyDataSource" />
</ItemTemplate>
</asp:TemplateField>
ऊपर यह मानते हुए कि पंक्तियों में लगातार आपका ड्रॉप-डाउन डेटा है। यह बदल रहा है, तो आप इस तरह के
<asp:DropDownList runat="server" DataSource='<%# GetDropDownData(Container) %>' DataTextField="Text" DataValueField="Value" />
के रूप में डेटा-बाइंडिंग अभिव्यक्ति का उपयोग GetDropDownData कोड-पीछे में एक संरक्षित विधि उस पंक्ति का डेटा (डेटा-तालिका, सूची, सरणी) वापस आ जाएगी हो जाएगा कर सकते हैं।
आप ड्रॉप-डाउन भरने के लिए कोड-पीछे में GridView.RowDataBound ईवेंट (या रोक्रेटेड ईवेंट) का उपयोग कर सकते हैं। उदाहरण के लिए,
protected void GridView_RowDataBound(Object sender, GridViewRowEventArgs e)
{
if(e.Row.RowType == DataControlRowType.DataRow)
{
// Find the drop-down (say in 3rd column)
var dd = e.Row.Cells[2].Controls[0] as DropDownList;
if (null != dd) {
// bind it
}
/*
// In case of template fields, use FindControl
dd = e.Row.Cells[2].FindControl("MyDD") as DropDownList;
*/
}
}
प्रस्तावित तरीकों के अलावा, आप भी अपने नियंत्रण अपने मार्कअप के भीतर बाँध सकता है, इस तरह से:
<asp:GridView ID="MyGrid" runat="server" DataSourceID="MyDataSource1">
<Columns>
<asp:TemplateField>
<EditItemTemplate>
<asp:DropDownList ID="DropDownList1" runat="server" SelectedValue='<%# Bind ("CustomerId") %>' DataSourceID="CustomersDataSource" DataTextField="CustomerName" DataValueField="CustomerId" >
</asp:DropDownList>
</EditItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
protected void gvSalesAppData_RowDataBound(Object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
DropDownList ddlCurrentPhase = (DropDownList)e.Row.FindControl("ddlCurrentPhase");
DropDownList ddlProductFamily = (DropDownList)e.Row.FindControl("ddlProductFamily");
DropDownList ddlProductGroup = (DropDownList)e.Row.FindControl("ddlProductGroup");
DropDownList ddlETProgramManager = (DropDownList)e.Row.FindControl("ddlETProgramManager");
DropDownList ddlPLMForTheProduct = (DropDownList)e.Row.FindControl("ddlPLMForTheProduct");
TrackingToolObj.BindCurrentPhases(ddlCurrentPhase);
TrackingToolObj.BindCurrentPhases(ddlProductFamily);
TrackingToolObj.BindProductGroups(ddlProductGroup);
TrackingToolObj.GetEmployeesBasedOnRoleTypeId(ddlETProgramManager, (int)OSAEnums.RoleTypes.ProgramManager, false);
TrackingToolObj.GetEmployeesBasedOnRoleTypeId(ddlPLMForTheProduct, (int)OSAEnums.RoleTypes.PLM, false);
}
}
GridView
बाइंडिंग नीचे है डेटा के साथ ग्रिड व्यू नियंत्रण को बांधने के लिए कोड।
सी #
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
this.BindData();
}
}
private void BindData()
{
string query = "SELECT top 10 * FROM Customers";
SqlCommand cmd = new SqlCommand(query);
gvCustomers.DataSource = GetData(cmd);
gvCustomers.DataBind();
}
private DataTable GetData(SqlCommand cmd)
{
string strConnString = ConfigurationManager.ConnectionStrings["conString"].ConnectionString;
using (SqlConnection con = new SqlConnection(strConnString))
{
using (SqlDataAdapter sda = new SqlDataAdapter())
{
cmd.Connection = con;
sda.SelectCommand = cmd;
using (DataTable dt = new DataTable())
{
sda.Fill(dt);
return dt;
}
}
}
}
कृपया अपना उत्तर संपादित करें और इसे पढ़ने योग्य बनाने के लिए कोड को प्रारूपित करें – kleopatra
ईमानदार होने के लिए, यह करने का एक कठिन तरीका है। यदि आपके पास ग्रिडव्यू में 500 पंक्तियां हैं, तो आप 500 बार डेटाबेस पूछने जा रहे हैं? जब मुझे ऐसा करना है, तो मैं ड्रॉप डाउन सूची में आइटम्स के डेटा के साथ डेटासेट भरता हूं और जैसा कि ऊपर दिखाया गया है, RowDataBound ईवेंट में, डेटासेट को ड्रॉपडाउन सूची में बाध्य करें। –
यहाँ अपने gridview
<asp:GridView ID="grvExcelData" runat="server" onrowdatabound="GridView2_RowDataBound">
<HeaderStyle BackColor="#df5015" Font-Bold="true" ForeColor="White" />
<Columns>
<asp:TemplateField>
<ItemTemplate>
<asp:DropDownList ID="DrdDatabase" Width="100px" runat="server">
</asp:DropDownList>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
है और gridview के लिए अपने RowDataBound
घटना
protected void GridView2_RowDataBound(object sender, GridViewRowEventArgs e)
{
string cities = "maxico,chennai,newdelhi,hongkong";
string [] arr = cities.Split(',');
// Instead of string array it could be your data retrieved from database.
if (e.Row.RowType == DataControlRowType.DataRow)
{
DropDownList ddl = (DropDownList)e.Row.FindControl("DrdDatabase");
foreach (string colName in arr)
ddl.Items.Add(new ListItem(colName));
}
}
ऐसा नहीं लगता है कि यह डेटाबेस से जुड़ा हुआ है बल्कि इसके बजाय शहरों की सरणी से जुड़ा हुआ है। यदि कोई उपयोगकर्ता ड्रॉप-डाउन में परिवर्तन करता है तो यह डेटाबेस को कैसे अपडेट करेगा? –
- 1. ड्रॉपडाउन सूची में पंक्ति सूचकांक कैसे प्राप्त करें IndexChanged?
- 2. ड्रॉपडाउन सूची में त्रुटि
- 3. ड्रॉपडाउन सूची
- 4. ड्रॉपडाउन सूची
- 5. ड्रॉपडाउन-सूची
- 6. Django रूप ड्रॉपडाउन सूची
- 7. ड्रॉपडाउन सूची डेटासोर्स
- 8. ड्रॉपडाउन सूची एएसपी एमवीसी
- 9. जब ड्रॉपडाउन सूची
- 10. ड्रॉपडाउन सूची एमवीसी 3
- 11. ग्रिडव्यू edititemtemplate
- 12. एएसपी.नेट एमवीसी ड्रॉपडाउन सूची मूल्य
- 13. PHP ड्रॉपडाउन सूची विकल्प विकल्प
- 14. ड्रॉपडाउन सूची में खाली पहला तत्व
- 15. चेकबॉक्स के साथ ड्रॉपडाउन सूची
- 16. ड्रॉपडाउन सूची में चयनित मान पूर्वपरिभाषित
- 17. चयन ड्रॉपडाउन सूची आइटम findbytext
- 18. विनफॉर्म - बहु चयन ड्रॉपडाउन सूची
- 19. व्यूमोडेल के साथ एक चयन सूची कैसे बांधें?
- 20. ग्रिडव्यू को कैसे साफ़ करें?
- 21. एक combobox के लिए एक सूची कैसे बांधें? (Winforms)
- 22. बाइंडिंग ड्रॉपडाउन सूची सूची में सूचीकरण और मूल्य डीडीएल
- 23. ग्रिडव्यू
- 24. ग्रिडव्यू
- 25. ग्रिडव्यू
- 26. LINQ डेटा को ड्रॉपडाउन सूची में कैसे बाध्य करें
- 27. ग्रिडव्यू
- 28. ग्रिडव्यू
- 29. ग्रिडव्यू
- 30. ग्रिडव्यू
RowCreated घटना के बारे में क्या होगा? क्या एक दूसरे को पसंद करने का कोई कारण होगा? – Tim
@ टिम, रोक्रेटेड भी काम करेगा। हालांकि, मेरा मानना है कि यदि आप केवल पहली बार ग्रिड को बाध्य कर रहे हैं (और पोस्ट-बैक पर नहीं), तो 'रोक्रेटेड' निश्चित रूप से प्रत्येक पोस्ट-बैक पर आग लग जाएगी, लेकिन 'रोडाटाबाउंड' नहीं है (मैं यहां 100% निश्चित नहीं हूं)। तो ऐसे मामले में, हम भरने के लिए ड्रॉप-डाउन पाने के लिए दृश्य-स्थिति पर भरोसा कर सकते हैं। निजी तौर पर, मैं मार्कअप मार्ग पसंद करता हूं। – VinayC
यह माना जाता है कि आपके कोड में आपका SQL इंस्टेंस घोषित किया गया है। यदि आप पहले से ही अपने कोड में अपने ग्रिड व्यू को बाध्य करते हैं तो एक अलग समाधान होना आवश्यक है, क्योंकि आप मार्कअप के माध्यम से ऐसा करने के लिए उदाहरण देने के लिए DataSourceId = "MyDataSource" –