PDA

View Full Version : سوال: دسترسی به تکس باکس ها در حلقه For



YourWorldToday
سه شنبه 31 شهریور 1388, 20:53 عصر
با سلام خدمت دوستان گرامی
من در فرم برنامه 10 تکس باکس دارم
Textbox1
Textbox2
Textbox3
و ....

حالا می خوام در حلقه For نام تکس باکس ها را رو بدست بیارم -
من یه متغیر رشته ای دارم که مقدارش Textbox . حال در هر با اجرا حلقه این متغیر با شماره حلقه به هم بچسبه تا نام تکس باکس بدست بیاد.
حالا تکس باکسی که هم نام با متغیر هست مقدار به بانک فرستاده بشه.

چطور میشه این کار رو انجام داد.
با تشکر

Asad.Safari
سه شنبه 31 شهریور 1388, 23:00 عصر
به این نگاه کنید تمام مشکلاتون حل میشه :

http://msdn.microsoft.com/en-us/library/aa289500(VS.71).aspx

YourWorldToday
سه شنبه 31 شهریور 1388, 23:20 عصر
خیلی ممنون از لطف شما SIR_asad (http://www.barnamenevis.org/forum/member.php?u=5548)
اما این، مسئله من رو حل نکرد. برای این مسئله این کد رو استفاده کردم



for (int Rows = 1; Rows <= 10; Rows++)
{
WebMsgBox.Show(((TextBox)Page.FindControl("TbName" + Rows.ToString())).Text);
}



ولی زمانی که اجرا می کنم خطا میده
Object reference not set to an instance of an object.

YourWorldToday
چهارشنبه 01 مهر 1388, 07:31 صبح
کسی از دوستان پیشنهادی نداره؟

Asad.Safari
چهارشنبه 01 مهر 1388, 09:37 صبح
یعنی شما نتونستید از Controls Array استفاده کنید ؟؟؟

این روشی که شما از آن استفاده کردید , معمولا برای کنترل هایی استفاده میشه که مستقیما بهش دسترسی نداریم . مثلا یک تکست باکس در یک گرید...

موفق باشید

YourWorldToday
چهارشنبه 01 مهر 1388, 09:55 صبح
من که از لینکی که فرستادید چیزی نفهمیدم
میشه یه مقدار توضیح بدید

Asad.Safari
چهارشنبه 01 مهر 1388, 10:14 صبح
<div runat="server" id="myPanel">
<asp:TextBox runat="server" id="search1" />
<asp:TextBox runat="server" id="search2" />
<asp:TextBox runat="server" id="search3" />
</div>

//// Access TextBoxes

string[] values = new string[myPanel.Controls.Count];
for(int i = 0; i < myPanel.Controls.Count; ++i)
{
values[i] = (myPanel.Controls[i] as TextBox).Text;
}

YourWorldToday
چهارشنبه 01 مهر 1388, 10:40 صبح
من از کد شما به صورت


WebMsgBox.Show((FindControl("TbName" + Rows.ToString()) as TextBox).Text);

استفاده کردم ولی در زمان اجرا خطا
Object reference not set to an instance of an object.
میده

Asad.Safari
چهارشنبه 01 مهر 1388, 11:10 صبح
این رو امتحان کنید :

اول تکست باکس هاتون رو طبق مثال زیر داخل یه تگ DIV که ران ات سرور است بیندازید :



<div runat="server" id="myPanel">
<asp:TextBox runat="server" id="txt1" />
<asp:TextBox runat="server" id="txt2" />
<asp:TextBox runat="server" id="txt3" />
</div>


و بعدش برای بازیابی از کد زیر استفاده کنید :



WebMsgBox.Show((myPanel.Controls[i] as TextBox).Text);

YourWorldToday
چهارشنبه 01 مهر 1388, 17:57 عصر
ضمن تشکر از این که وقت خود را برای پاسخ به این تاپیک می گذرید
ولی توجه کنید که من نمی خوام با شماره کنترل کار کنم
من می خوام در حلقه اسم تکس باکس ها رو تولید کنم و بعد تکس باکسی که هم نام با نام تولید شده رو چک کنم.

Asad.Safari
چهارشنبه 01 مهر 1388, 18:39 عصر
عزیز یکم دقت کن , شما اسم تکست باکس رو چه جوری می خای تولید کنی ؟

مثلا شما یه حلقه for دارید به صورت زیر


for(int i=0;i<10;i++)


خوب شما مگر برای ایجاد نام تکست باکس هاتون مثل زیر عمل نمی کنید ؟



for(int i=0;i<10;i++)
{
string myTextBoxName="txt"+i;
}


اگر درسته بگید تا ادامه بدم !

Vahid_moghaddam
چهارشنبه 01 مهر 1388, 18:58 عصر
ببینید این به دردتون می خوره



foreach (TextBox myChildTextBox in this.Controls.OfType<TextBox>())
{ myChildTextBox.Enabled = false;
}

YourWorldToday
چهارشنبه 01 مهر 1388, 22:21 عصر
SIR_asad (http://www.barnamenevis.org/forum/member.php?u=5548) درسته

من یه عکس فرم رو ضمیمه کردم لطفا نگاه کنید.
در هر ردیف تا سه تا ستون رو ای دی تکس باکس ها رو قرار دادم. بقیه تکس باکس ها هم یه همین صورت نام گزاری میشود. من می خوام در اجرای هر حلقه نام تکس باکس ها رو بدست بیام حال مقدار تکس باکس ها که بدست امده رو بررسی کنم. این حالات تا پایان ردیف 10 ادامه داره.

Asad.Safari
پنج شنبه 02 مهر 1388, 11:45 صبح
for (int i = 1; i < 4; i++)
{
string myTextBoxName; /// A variable for store textbox value
string itxtname = "txt" + i; /// Create TextBox name ex. txt1
myTextBoxName = ((TextBox)myPanel.FindControl(itxtname)).Text; /// get textbox value
Response.Write(myTextBoxName); /// simple show textbox value with a variable
}