PDA

View Full Version : DropDownList در دیتاگرید با مقدار ثابت !!



merlin_vista
چهارشنبه 25 مهر 1386, 11:18 صبح
سلام :
آقا من میخواهم در دیتاگیرد یک DropDownList بگزارم که دو مقدار ثابت YES و NO دارد که در بانک به طور پیش فرض در فیلد CHEK مقدار NO کاربر بتونه اون مقدار را به وسیله DropDownList عوض کنه .. حالا این را نمیدانم که چگونه بنویسم !! :متفکر:
اگه میشه به صورت کامل توضیح بدهید تا بفهمم! در ضمن من جستجو کردم اون چیزی که میخواهستم نبود و در اعلان های سایت = " اعمال متداول با گریدویو " ار دانلود کردم ولی چیزی ازش نفهمیدم در ضمن بانک من SQL 2000 است و زبان برنامه نویسی C# میباشد ! :چشمک:

abolfazl585
چهارشنبه 25 مهر 1386, 12:26 عصر
لینک زیر رو نگاه کن.
http://barnamenevis.org/forum/showthread.php?t=79788
میتونی از پستهای من و دوستان دیگه استفاده کنی.
اگه یه کم دقت کنی راحته.
در ضمن این تاپیک مربوط به TextBox هست که فکر نکنم در عمل تفاوتی با DropDownList داشته باشه.

abadanboy
چهارشنبه 25 مهر 1386, 13:30 عصر
Asp

<asp:DataGridID="datagrid1"runat="server">
<Columns>
<asp:TemplateColumn>
<ItemTemplate>
<asp:DropDownListID="dp"runat="server">
<asp:ListItemValue="1">Yes</asp:ListItem>
<asp:ListItemValue="0">NO</asp:ListItem>
</asp:DropDownList>
</ItemTemplate>
</asp:TemplateColumn>
</Columns>
</asp:DataGrid>



C#

foreach (DataGridItem myitem in datagrid1.Items)
{
DropDownList dp = myitem.FindControl("dp") asDropDownList;
dp.SelectedValue = "0";
}

merlin_vista
چهارشنبه 25 مهر 1386, 15:00 عصر
Asp

<asp:DataGridID="datagrid1"runat="server">
<Columns>
<asp:TemplateColumn>
<ItemTemplate>
<asp:DropDownListID="dp"runat="server">
<asp:ListItemValue="1">Yes</asp:ListItem>
<asp:ListItemValue="0">NO</asp:ListItem>
</asp:DropDownList>
</ItemTemplate>
</asp:TemplateColumn>
</Columns>
</asp:DataGrid>

C#



foreach (DataGridItem myitem in datagrid1.Items)
{
DropDownList dp = myitem.FindControl("dp") asDropDownList;
dp.SelectedValue = "0";
}

من برای این کد باید به دیتاگیریدم Tempelet اضافه کنم یا نه !! :متفکر::گیج:

abadanboy
چهارشنبه 25 مهر 1386, 15:35 عصر
نفهمیدم یعنی چی؟

merlin_vista
چهارشنبه 25 مهر 1386, 15:55 عصر
میگم خوب حالا چگونه مقدار رو تو دیتابیس آپدیت کنم !!

merlin_vista
چهارشنبه 25 مهر 1386, 17:01 عصر
آقا بعد از پرسش های زیاد از آقای abadanboy (http://barnamenevis.org/forum/member.php?u=45359) که همین جا ازش تشکر مکنم !!
این کد را در UpdateCommand دیتاگرید نوشتم :

int ID = (int)this.DataGrid1.DataKeys[e.Item.ItemIndex];

DsMnazarat.nazarRow dr = this.dsMnazarat1.nazar.FindByid(ID);
DropDownList dp = DataGrid1.FindControl("DropDownList1") as DropDownList;
string h=dp.SelectedItem.Text;
dr.chek = h.ToString();

this.sqlDaNazar.Update(this.dsMnazarat1.nazar);

this.sqlDaNazar.Fill(this.dsMnazarat1.nazar);

this.DataGrid1.EditItemIndex = -1;
this.DataGrid1.DataSource = this.dsMnazarat1.nazar;
this.DataGrid1.DataBind();

و این هم قمسمت ASPX :

<Columns>
<asp:BoundColumn DataField="id" HeaderText="شماره پیگیری نظر"></asp:BoundColumn>
<asp:BoundColumn DataField="commdate" HeaderText="تاریخ ارسال نظر"></asp:BoundColumn>
<asp:BoundColumn DataField="commname" HeaderText="نام ارسال کننده نظر"></asp:BoundColumn>
<asp:TemplateColumn HeaderText="نمایش - پنهان">
<ItemTemplate>
<asp:DropDownList ID="DropDownList1" runat="server" CssClass="fon">
<asp:ListItem>yes</asp:ListItem>
<asp:ListItem>no</asp:ListItem>
</asp:DropDownList>
<asp:Label ID="lblch" runat="server"><%# DataBinder.Eval(Container.DataItem, "chek")%></asp:Label>
</ItemTemplate>
</asp:TemplateColumn>
<asp:EditCommandColumn ButtonType="PushButton" CancelText="لغو" EditText="ویرایش"
UpdateText="ذخیره"></asp:EditCommandColumn>
<asp:ButtonColumn ButtonType="PushButton" CommandName="Delete" Text="حذف"></asp:ButtonColumn>
</Columns>
</asp:DataGrid>

,ولی این خطا را داد :

Object reference not set to an instance of an object.
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: System.NullReferenceException: Object reference not set to an instance of an object.

نمیدونم چرا و کجاش اشتباه کردم و آیا کدی که نوشتم درست هست یا نه !! :متفکر:

abadanboy
چهارشنبه 25 مهر 1386, 21:27 عصر
خوب آخرش مجبور شدم واست بنویسمش
این کد البته کامل نیست ولی این طور عمل می کنه که
اون عده از dropdown لیست هایی رو که انتخابشون yes هست رکورد متناظرشو واست yes می کنه
به عکس نگاه کن این عکس بعد از زدن دکمه ثبت هست که من 2 رکورد اول رو yes انتخاب کردم و بقیه همون NO بوده البته تو جدول همه ستون MYDP توش NO بوده که حلا با انتخاب 2 تا اولی yes شده
موفق باشی


<asp:DataGridID="dg1"runat="server"DataKeyField="ID">
<Columns>
<asp:TemplateColumn>
<ItemTemplate>
<asp:DropDownListID="DP1"runat="server">
<asp:ListItemValue="1">NO</asp:ListItem>
<asp:ListItemValue="0">YES</asp:ListItem>
</asp:DropDownList>
</ItemTemplate>
</asp:TemplateColumn>
</Columns>
</asp:DataGrid>
<asp:ButtonID="Button1"runat="server"Text="SABT"OnClick="Btnup_Click"/>




using System;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Text;
publicpartialclassDefault2 : System.Web.UI.Page
{
SqlConnection cn = newSqlConnection();
SqlCommand cmd = newSqlCommand();
protectedvoid Page_Load(object sender, EventArgs e)
{
cn.ConnectionString="server=(local);uid=123;pwd=123;database=Northwind";
cmd.Connection = cn;
if (!IsPostBack)
{
Dgrid();

}

}
protectedvoid Btnup_Click(object sender, EventArgs e)
{
StringBuilder strB = newStringBuilder();
foreach (DataGridItem i in dg1.Items)
{
DropDownList cb = (DropDownList)i.FindControl("DP1");
if (cb.SelectedItem.Text=="YES")
{
strB.Append(dg1.DataKeys[i.ItemIndex].ToString());
// strB.Append(" ");
}
}
cmd.CommandText = "Update MYDP set MYDP='YES' Where (CHARINDEX (LTRIM (STR (ID ) ), @NewsId)>0)";
cmd.Parameters.Add("@NewsId", SqlDbType.Int);
cmd.Parameters["@NewsId"].Value = strB.ToString();
cn.Open();
cmd.ExecuteNonQuery();
cn.Close();
Dgrid();
}
void Dgrid()
{
SqlDataAdapter da = newSqlDataAdapter("Select * from MYDP", cn);
DataSet ds=newDataSet();
da.Fill(ds, "tt");
dg1.DataSource = ds.Tables["tt"].DefaultView;
dg1.DataBind();

}
}

merlin_vista
چهارشنبه 25 مهر 1386, 23:28 عصر
ممنون آقا زحمتتون دادم ، باید ببخشید ؟!!
مشکل با توجه به کد شما حل شد امیدوارم بتونم جبران کنم !!!