PDA

View Full Version : سوال: تغییر عکسی که اسم عکس در رشته است؟؟



setareh69
چهارشنبه 20 دی 1391, 16:06 عصر
سلام سوالم فوریه اگه ممکنه کمکم کنید
چه جوری و با چه کدی میشه تصویر imagebutton را که اسم imagebutton در رشته هست رو عوض کرد؟مثلا می خوام عکس imagebutton1 را عوض کنم کدش که خب راحته واین میشه

imagebutton1.imageurl="~/1.png";


ولی حالا اگه این imagebutton داخل یک رشته باشه

string name="imagebutton1";


چه کدی باید بنویسم که بتونه متنی رو که داخل رشته name هست را برداره و عکسی که اسمش همون اسم داخل رشته name هست را عوض کنه؟
مرسی

alihassanabadi
چهارشنبه 20 دی 1391, 16:36 عصر
سلام
سوال رو واضح تر بپرسید
شما میخواید کنترل های asp شبیه imageButton رو پویا تولید کنی؟
یا نه میخواید یک رشته مثل
<asp:imageButton/>
رو به کنترل asp تبدیل کنی؟

m_akbari11
چهارشنبه 20 دی 1391, 18:10 عصر
سلام .
سوالتون کمی گنگه ولی فکر میکنم منظورتون این مثال زیر که براتون زدم باشه :

ایجاد یک کنترل ImageButton به صورت داینامیک :

ImageButton IMG = new ImageButton();

IMG.BackColor = System.Drawing.Color.Red;
IMG.ImageUrl = "Address";
IMG.ID = "AKBARI ";
Form.Controls.Add(IMG);


میتونید ID کنترل رو هم از دیتا بیس بخونید و به صورت رشته برای این ImageButton ایجاد شده تعریف کنید و سپس در همه جا می توانید به وسیله ID که آن را از یک پایگاه داده یا (به قول شما ، رشته ) خوانده اید به آن دسترسی داشته باشید.


IMG.ID = "AKBARI";

یا حق - سوالی داشتید در خدمت هستم

clover
چهارشنبه 20 دی 1391, 18:48 عصر
ولی حالا اگه این imagebutton داخل یک رشته باشه
زمانی که اسم یک کنترل رو داشته باشید می تونید با استفاده از تابع FindControl به اون دسترسی پیدا کنید. به این مثال دقت کنید:

string name = "ImageButton1";
ImageButton ImageButton1 = Page.FindControl(name) as ImageButton;
ImageButton1.ImageUrl = "~/1.png";

موفق باشید

m_akbari11
چهارشنبه 20 دی 1391, 19:22 عصر
زمانی که اسم یک کنترل رو داشته باشید می تونید با استفاده از تابع FindControl به اون دسترسی پیدا کنید. به این مثال دقت کنید:

string name = "ImageButton1";
ImageButton ImageButton1 = Page.FindControl(name) as ImageButton;
ImageButton1.ImageUrl = "~/1.png";

موفق باشید

مجددا سلام .
برای دسترسی به اون آیتم نیاز به نام ندارید و فقط ID نیازه .

برای مثال :

سلام .
ایجاد یک کنترل ImageButton به صورت داینامیک :

ImageButton IMG = new ImageButton();
IMG.BackColor = System.Drawing.Color.Red;
IMG.ImageUrl = "Address";
IMG.ID = "AKBARI ";
Form.Controls.Add(IMG);

میتونید ID کنترل رو هم از دیتا بیس بخونید و به صورت رشته برای این ImageButton ایجاد شده تعریف کنید و سپس در همه جا می توانید به وسیله ID که آن را از یک پایگاه داده یا (به قول شما ، رشته ) خوانده اید به آن دسترسی داشته باشید.

IMG.ID = "AKBARI";



و به وسیله Findcontrol میتوانید به همان ID دسترسی داشته باشید .

ImageButton ImageButton1 = (ImageButton)Form.FindControl("AKBARI");
//ImageButton ImageButton1 = (ImageButton)Page.FindControl("AKBARI");
ImageButton1.BackColor = System.Drawing.Color.Yellow;



امیدوارم مشکلتون با این مثال حل شود .

setareh69
چهارشنبه 20 دی 1391, 19:26 عصر
زمانی که اسم یک کنترل رو داشته باشید می تونید با استفاده از تابع FindControl به اون دسترسی پیدا کنید. به این مثال دقت کنید:

string name = "ImageButton1";
ImageButton ImageButton1 = Page.FindControl(name) as ImageButton;
ImageButton1.ImageUrl = "~/1.png";

موفق باشید

اول ممنون از همگی
من نمی خوام کنترل پویا ایجاد کنم.imagebutton رو دارم فقط میخوام اسم کنترل را از یک رشته بگیرم .بعد همون imagebutton که اسمش در رشته هست را تصویرش را عوض کنم.
فکر میکنم clover عزیز منظورم رو متوجه شده باشن.در واقع برای اینکه اسم imagebutton1 را مستقیم بنویشم و آدرس را در imageurl عوض کنم ، می خوام اسم آن رو از رشته name بگیرم و اسمشو عوض کنم.سوال اینه که چه جوری رشته را بهimageurl تبدیل کنم که ویژگی imageurl داشته باشه؟
اما همین دستور رو که مینویسم.به این صورت


string name = "ImageButton1";
ImageButton Image1 = Page.FindControl(name) as ImageButton;
Image1.ImageUrl = "~/1.png";

خطای زیر رو میده
Object reference not set to an instance of an object.
در واقع imagebutton1 رو نمیشناسه و پیدا نمیکنه .در صورتی که در صفحه دارمش.
بازم ممنون میشم اگه کمکم کنید.

clover
چهارشنبه 20 دی 1391, 20:18 عصر
Object reference not set to an instance of an object
دقت کنید که زمانی که کنترل مستقیما جزو کنترل های صفحه باشه باید از Page.FindControl استفاده کنید. در صورتی که از مستر پیج استفاده می کنید باید تابع FindControl متعلق به ContentPlaceHolder مربوطه رو فراخوانی کنید و به طور کلی باید در کنترل پدر به دنبال این کنترل جستجو کنید.
همینطور به حروف کوچیک و بزرگ در نام کنترل دقت کنید.

m_akbari11
چهارشنبه 20 دی 1391, 20:51 عصر
اول ممنون از همگی
من نمی خوام کنترل پویا ایجاد کنم.imagebutton رو دارم فقط میخوام اسم کنترل را از یک رشته بگیرم .بعد همون imagebutton که اسمش در رشته هست را تصویرش را عوض کنم.
فکر میکنم clover عزیز منظورم رو متوجه شده باشن.در واقع برای اینکه اسم imagebutton1 را مستقیم بنویشم و آدرس را در imageurl عوض کنم ، می خوام اسم آن رو از رشته name بگیرم و اسمشو عوض کنم.سوال اینه که چه جوری رشته را بهimageurl تبدیل کنم که ویژگی imageurl داشته باشه؟
اما همین دستور رو که مینویسم.به این صورت


string name = "ImageButton1";
ImageButton Image1 = Page.FindControl(name) as ImageButton;
Image1.ImageUrl = "~/1.png";

خطای زیر رو میده
Object reference not set to an instance of an object.
در واقع imagebutton1 رو نمیشناسه و پیدا نمیکنه .در صورتی که در صفحه دارمش.
بازم ممنون میشم اگه کمکم کنید.




در پست شماره 5 پاسخ شما داده شده است . (به قسمت آخر آن پست که از Findcontrol استفاده شده است توجه کنید .در ضمن از Form به جای Page استفاده کنید.
به سمپل توجه کنید مشکلتون حل خواهد شد.

setareh69
چهارشنبه 20 دی 1391, 21:38 عصر
ممنون از همگی.لطف کردید
به پاسخ سوالم رسیدم.