PDA

View Full Version : به دست ۀوردن مقدار DropDownList استفاده شده داخل یک گرید



sara_aryanfar
پنج شنبه 11 اسفند 1390, 21:16 عصر
با سلام چطوری میشه مقدارDropDownList که داخل یک گرید استفاده شده رو به دست آورد

ramin149
پنج شنبه 11 اسفند 1390, 23:19 عصر
foreach (DataGridItem dgItem in countriesGrid.Items)
{
GroupRadioButton selectRadioButton =
dgItem.FindControl("GroupRadioButton1") as GroupRadioButton;
}

sara_aryanfar
جمعه 12 اسفند 1390, 01:23 صبح
اما سوال من در مورد DropDownList بودا

Ehsan Boorboor
جمعه 12 اسفند 1390, 02:32 صبح
راه اول

AutoPostBack را True می کنیم تا با هر بار تغییر index روی دهد و سپس در رویداد SelectedIndexChanged با Convert نمودن پارامتر sender به DorpDownList داخل گرید دسترسی خواهیم داشت.

داخل Markup

<asp:TemplateField HeaderText="DropDownListColumn">
<ItemTemplate>
<asp:DropDownList ID="ddlSample" runat="server" AutoPostBack="True"
onselectedindexchanged="ddlSample_SelectedIndexChanged">
<asp:ListItem Value="311">اصفهان</asp:ListItem>
<asp:ListItem Value="21">تهران</asp:ListItem>
<asp:ListItem Value="511">مشهد</asp:ListItem>
</asp:DropDownList>
</ItemTemplate>
</asp:TemplateField>

و در CodeBehind

protected void ddlSample_SelectedIndexChanged(object sender, EventArgs e)
{
DropDownList ddlSample = (DropDownList)sender;
lblTitle.Text = ddlSample.SelectedItem.Text;
lblCode.Text = ddlSample.SelectedItem.Value;
}

Ehsan Boorboor
جمعه 12 اسفند 1390, 02:52 صبح
روش دوم

از طریق یک دستور مانند LinkButton سطر انتخاب شده گرید را بدست آوریم و در سطر مذکور کنترل DropDownList مان را پیدا می کنیم

در Markup

<asp:TemplateField HeaderText="DropDownListColumn">
<ItemTemplate>
<asp:DropDownList ID="ddlSample" runat="server">
<asp:ListItem Value="311">اصفهان</asp:ListItem>
<asp:ListItem Value="21">تهران</asp:ListItem>
<asp:ListItem Value="511">مشهد</asp:ListItem>
</asp:DropDownList>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="CommandColumn">
<ItemTemplate>
<asp:LinkButton ID="lbSelect" runat="server">انتخاب شهر</asp:LinkButton>
</ItemTemplate>
</asp:TemplateField>

همان طور که می دانید باید داخل RowCommand گرید رویداد کلیک LinkButtom را Handle کنیم

از طریق پارامتر e در RowCommand منبع ایجاد دستور که LinkButtom باشد را پیدا کرده و سپس مشخص می کنیم LinkButtom مان در کدام سطر قرار دارد و از آن سطر به DropDownList عزیز!!! می رسیم

protected void grdSample_RowCommand(object sender, GridViewCommandEventArgs e)
{
LinkButton lbSelect = (LinkButton)e.CommandSource;

GridViewRow row = lbSelect.NamingContainer as GridViewRow;

DropDownList ddlSample = (DropDownList)row.FindControl("ddlSample");

lblTitle.Text = ddlSample.SelectedItem.Text;
lblCode.Text = ddlSample.SelectedItem.Value;
}
----------------------------------------------------------------------------

اگر دوستان روش های دیگه به نظرشون می رسه لطف کنن

sara_aryanfar
جمعه 12 اسفند 1390, 13:49 عصر
دوستان من در مواردی که نیاز دارم در داخل گرید یه مقداری رو در دست داشته باشم اون رو به یک لیبل اختصاص می دم و بهد با اون لیبل کار می کنم به نظرت این راه منطقی هست

hobab-theme
جمعه 12 اسفند 1390, 15:18 عصر
راه های مختلفی برای بدست آوردن مقدار از داخل کنترل هایی مثل گرید وجود داره که خوب یکی از این راه ها همین روشی هست که خودت استفاده کردی.

fakhravari
جمعه 12 اسفند 1390, 15:34 عصر
http://barnamenevis.org/showthread.php?329842-%DA%AF%D8%B1%D9%81%D8%AA%D9%86-%D9%85%D9%82%D8%AF%D8%A7%D8%B1-%D8%A7%D8%B2-%D8%B3%D8%B7%D8%B1-%DA%AF%D8%B1%DB%8C%D8%AF&p=1454005&viewfull=1#post1454005