PDA

View Full Version : سوال: دسترسی به اشیاء List View



alizanganeh
جمعه 07 آذر 1393, 22:32 عصر
سلام دوستان
یک DropDownList توی ListView گذاشتم و میخوام به مقدار مثلا Selected Index اون دسترسی داشته باشم . کد زیر رو میزنم که مقدار Selected Index این DropDownList به یک DropDownList دیگه که توی همون ListView هست منتقل بشه و رکوردهاشون یکی بشن ولی میگه همچین آبجکتی پیدا نشد و ارور Object reference not set to an instance of an object. میده . هرکاری هم میکنم نمیشه . توی اینترنت هم جستجو کردم و قالب دسترسی به اشیاء ListView همین بود . لطفا کمک کنید . ممنون

اینم کدی که زدم (توی SelectedIndexChanged از DropDownList اول) :

protected void dropdownlist1_SelectedIndexChanged(object sender, EventArgs e)
{
((DropDownList)listview1.FindControl("dropdownlist2")).SelectedIndex = Convert.ToInt32(((DropDownList)listview1.FindContr ol("dropdownlist1")).SelectedIndex);
}

ghossein
شنبه 08 آذر 1393, 03:13 صبح
سلام
اگه قصد دسترسی به یه کنترل ، در ListView ، با شماره سطر ،در یک صفحه وب داری ، باید به صورت زیر بنویسیش :
Number Of Row : شماره سطر مورد نظر

int Index= Int32.Parse(((DropDownList)ListView1.Items[Number Of Row].FindControl("dropdownlist2")).SelectedIndex
);

بهتر بود این سوال رو در تالار مربوطه (Asp.net) می پرسیدید.

NASA's Spaceman
شنبه 08 آذر 1393, 08:25 صبح
دوست عزیز منظورت رو متوجه نشودم یعنی میخوای اطلاعات یک drop down list "A" v رو به Drop down list "B" کپی کنی که توی هر دوتاش باشه؟
اگه منظورت این هست که از foreach استفاده کن گمون نکنم با foreach به مشکلی بر بخوری
با سپاس Spaceman

alizanganeh
شنبه 08 آذر 1393, 11:07 صبح
سلام
اگه قصد دسترسی به یه کنترل ، در ListView ، با شماره سطر ،در یک صفحه وب داری ، باید به صورت زیر بنویسیش :
Number Of Row : شماره سطر مورد نظر

int Index= Int32.Parse(((DropDownList)ListView1.Items[Number Of Row].FindControl("dropdownlist2")).SelectedIndex
);

بهتر بود این سوال رو در تالار مربوطه (Asp.net) می پرسیدید.



شرمنده فکر کردم این مال asp.net هم باشه .
آقا این کد جواب داد الان . فقط مشکل اینه که باید توی Items چی بنویسم که واسه همه رکورد های ListView جواب بده ؟ الان مثلا بنویسم 0 فقط روی رکورد اول کار میکنه . ممنون

ghossein
شنبه 08 آذر 1393, 15:45 عصر
برای دسترسی به سطر مورد نظر و طبعاً کنترل دلخواه ، باید شماره هر سطر رو در جایی از سطر نگه دارید تا در مواقع که احتیاج دارید ازش استفاده کنید. برای این منظور من پیشنهاد می کنم شما شماره هر سطر رو داخل خصوصیت Tooltip یا TabIndex ذخیره کنید تا بعد با کمک اون بدونید که کاربر کدوم کومبو باکس از کدوم سطر رو انتخاب کرده.

<asp:DropDownList ID="dropdownlist1" runat="server" ToolTip='<% #Container.DataItemIndex + 1 %>' OnClick="SelectedIndexChanged" />

خوب حالا که برای هر سطر ، یه شماره سطر ایجاد کردیم نوبت به این میرسه که بیام کدنویسی سمت سرور رو انجام بدیم تا به هدفی که می خواهیم برسیم ، رویداد SelectedIndexChanged مربوط به dropdownlist1 رو باز کنید و داخل اون این کد رو بنویسید :

protected void dropdownlist1_SelectedIndexChanged(object sender, EventArgs e)
{



DropDownList row = sender as DropDownList;

((DropDownList)ListView1.Items[(Int32.Parse(row.ToolTip))-1].FindControl("dropdownlist2")).SelectedIndex =Int32.Parse(((DropDownList)ListView1.Items[(Int32.Parse(row.ToolTip))-1].FindControl("dropdownlist1")).ToolTip);

}

alizanganeh
شنبه 08 آذر 1393, 16:29 عصر
آقا این همچنان فقط روی رکورد اول جواب میده با این تفاوت که برای رکورد های بعدی این ارور رو میده :
'dropdownlist2' has a SelectedIndex which is invalid because it does not exist in the list of items.
dropdownlist2 همونیه که قراره مقدار selected index تغییر کنه.

کد DropDownList شد این واسه من :
<asp:DropDownList ID="dropdownlist1" runat="server" Width="300px" AutoPostBack="True" DataSourceID="SqlDataSource2" DataTextField="Class" DataValueField="Class" OnSelectedIndexChanged="dropdownlist1_SelectedIndexChanged" ToolTip='<% #Container.DataItemIndex + 1 %>'></asp:DropDownList>

اینم شد کد C#‎‎‎‎‎‎‎‎‎‎‎ :
protected void dropdownlist1_SelectedIndexChanged(object sender, EventArgs e)

{

DropDownList row = sender as DropDownList;

((DropDownList)listview1.Items[(Int32.Parse(row.ToolTip)) - 1].FindControl("dropdownlist2")).SelectedIndex = Int32.Parse(((DropDownList)listview1.Items[(Int32.Parse(row.ToolTip)) - 1].FindControl("dropdownlist1")).ToolTip);

}



رو رکورد اول درست کار میکنه ولی روی دومی و دومی به بعد ارور بالا رو میده
ممنون

ghossein
شنبه 08 آذر 1393, 19:16 عصر
سلام

پروژه رو ضمیمه کردم (VS 2010) ، فقط دیتابیس رو Generate script کردم باید اجراش کنی تا دیتابیس ساخته بشه و بعد دو سه تا سطر آزمایشی داخل جدول Producter اضافه کن .


موفق باشید%

alizanganeh
یک شنبه 09 آذر 1393, 00:35 صبح
سلام

پروژه رو ضمیمه کردم (VS 2010) ، فقط دیتابیس رو Generate script کردم باید اجراش کنی تا دیتابیس ساخته بشه و بعد دو سه تا سطر آزمایشی داخل جدول Producter اضافه کن .


موفق باشید%


آقا این پروژت همش ارور و وارنینگه . فکر کنم چون من VS 2012 دارم و این 2010 هستش . البته اینی که دادید Web Application هستش . این تفاوتش با کار من ، مشکلساز نیست ؟
ممنون

ghossein
یک شنبه 09 آذر 1393, 11:03 صبح
سلام
خوب این هم WebSite ، ببین به دردت می خوره. (vs 2010). شرمنده vs 2012 ندارم.

alizanganeh
یک شنبه 09 آذر 1393, 11:54 صبح
داداش این فرم های Login و Register که گذاشتی دردسر سازن . توی webconfig یک کدهایی نوشتی که توی ارور میگه اینا واسه IIS شناخته شده نیستن :
<authentication mode="Forms">
<forms loginUrl="~/Account/Login.aspx" timeout="2880" />
</authentication>


<membership>
<providers>
<clear/>
<add name="AspNetSqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider" connectionStringName="ApplicationServices"
enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false"
maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10"
applicationName="/" />
</providers>
</membership>


<profile>
<providers>
<clear/>
<add name="AspNetSqlProfileProvider" type="System.Web.Profile.SqlProfileProvider" connectionStringName="ApplicationServices" applicationName="/"/>
</providers>
</profile>


<roleManager enabled="false">
<providers>
<clear/>
<add name="AspNetSqlRoleProvider" type="System.Web.Security.SqlRoleProvider" connectionStringName="ApplicationServices" applicationName="/" />
<add name="AspNetWindowsTokenRoleProvider" type="System.Web.Security.WindowsTokenRoleProvider" applicationName="/" />
</providers>
</roleManager>



تازه masterpage هم باز نمیشه که وقتی کد masterpage رو از توی فرم default بر میدارم بازم ارور این webconfig هستش . وقتی این کدها رو از توی webconfig پاک میکنم ، میگه تگ های asp که استفاده شده ، شناخته شده نیستن . وقتی اونا شناخته نشن ، توابعی که گفتی روی selextedindex changed اجرا بشه ، دیگه اجرا نمیشن و ارور میدن . کلا یک وضعیت شیر تو شیریه !!!!!!!!!!!
اگر میشه یکبار دقیق مراحل رو توضیح بده تا انجام بدم
دمت گرم

ghossein
دوشنبه 10 آذر 1393, 01:17 صبح
کچل شدم :عصبانی++:
این یکی رو امتحان کن.

alizanganeh
دوشنبه 10 آذر 1393, 01:36 صبح
:قهقهه: ممنون حل شد :لبخند:
شرمنده خیلی زحمتت دادم . شدیدا ممنون
موفق باشی