PDA

View Full Version : نمایش ستونهای یک فایل اکسل بصورت لینک



masoud60
جمعه 22 دی 1391, 21:37 عصر
با سلام

دوستان من از کاربر یک فایل اکسل رو دریافت میکنم و میخوام ستونهای فایل رو بصورت لینک نمایش بدم. بتونن روی اونها کلیک کنن.

if (FileUpload1.PostedFile.ContentType == "application/vnd.ms-excel")
{
string filename = System.IO.Path.GetFileName(FileUpload1.FileName);
string path = Server.MapPath("~/") + "tmpFiles\\" + filename;
FileUpload1.SaveAs(path);
DataTable dt = sms.GetExcelInfo(path); // get data of excel int i = 1;
foreach (DataColumn column in dt.Columns)
{
lb.Text += column.ColumnName; } }



--------------------------
http://www.kohan-co.net

masoud60
شنبه 23 دی 1391, 19:19 عصر
چرا هیچ کس جواب نمیده زیاد سخت نیست:لبخند:

این کدها درست هستند مشکلی ندارند من اسم ستونها رو با lb نمایش میدم اینها رو چطوری روی لینکهای مختلف نمایش بدم.




-----------------------------
http://www.kohan-co.net

مهرداد صفا
شنبه 23 دی 1391, 23:14 عصر
با سلام
اول اگر اشتباهی در کار بو میبخشید. من asp کار نکردم و خیلی چیزها در موردش نمیدونم فقط در حد خیلی مبتدی:
فکر میکنم در هر بار تکرار حلقه باید یک تگ <a> تعریف شود و متغیر حلقه به عنوان text در نظر گرفته شود. به این صورت:

foreach(DataColumn column indt.Columns)
{
Responce.Write(@"<a href=http://address>" + column.ColumnName + "</a>";
}


یا درون فایل .aspx:

<%
foreach(DataColumn column indt.Columns)
{%>
<a href="http://address">
<%= column.ColumnName;%> </a>
<%} %>


به هر حال اگر راه حل مشکل را پیدا کردید اینجا قرار دهید تا افراد مبتدی مثل من هم استفاده کنند.
موفق باشید

masoud60
سه شنبه 26 دی 1391, 09:09 صبح
سلام
با این روش تونستم لینک رو اضافه کنم
foreach(DataColumn column indt.Columns)
{
Responce.Write(@"<a href=''>" + column.ColumnName + "</a>";
}


ولی من میخوام که event داشته باشم چون نسبت کلیک هر کدام کاری میخوام انجام بدم

malloc
سه شنبه 26 دی 1391, 11:02 صبح
خوب دوست عزیز تو اگه تعداد ستونهای فایل اکسل رو بدونی و نوعشون رو هم بدونی میتونی گریدویو رو به صورت تمپلیت طراحی کنی و اون ستونی که میدونی لینک داره رو یه linkbutton بزار و کارتو انجام بده

alihassanabadi
سه شنبه 26 دی 1391, 11:40 صبح
سلام
خب اگه میخوای از جاوا اسکریپت برای رویداد کلیک هر کدوم از a ها استفاده کن و یک تابع رو تو رویداد onclick شون صدا بزن
ولی اگه میخوای از event سمت سرور استفاده کنی میتونی linkbutton به صورت پویا به page اضافه کنی و یک event برای کلیک همشون طراحی کن
مثلا


protected void Page_Load(object sender, EventArgs e)
{
for (int i = 0; i <= 3; i++)
{
LinkButton btnAddtxt = new LinkButton();
btnAddtxt.ID = i.ToString();//u can set this with u're column name
btnAddtxt.Text = "I am linkbutton" + i.ToString() ;//u can set this with column content
btnAddtxt.Click += new System.EventHandler(btnAdd_Click);
this.Controls.Add(btnAddtxt);
}
}

چون از for استفاده میکنی id هر لینک باتون باید unique باشه
و event کلیک برای لینک باتون ها


protected void btnAdd_Click(object sender, EventArgs e)
{

LinkButton li = (LinkButton)sender;
if (li.ID.ToString() == "1")
{
Response.Write("link button 1 pressed");
}
if (li.ID.ToString() == "2")
{
Response.Write("link button 2 pressed");
}
if (li.ID.ToString() == "3")
{
Response.Write("link button 3 pressed");
}

}

masoud60
سه شنبه 26 دی 1391, 17:14 عصر
خوب دوست عزیز تو اگه تعداد ستونهای فایل اکسل رو بدونی و نوعشون رو هم بدونی میتونی گریدویو رو به صورت تمپلیت طراحی کنی و اون ستونی که میدونی لینک داره رو یه linkbutton بزار و کارتو انجام بده

بله من تعداد ستونها رو میدونم اسم فیلدهام رو میخوام لینک کنم محتویات فایل لینک نیستن.
مثلا یه کاربر یه فایل انتخاب می کنه با که 4 ستون داره : موبایل - پیشوند - متن - امضا
نمونه فایل رو از لینک زیر دانلود کنید
http://www.kohan-co.net/i.zip
4 تا لینک به فرم اضافه بشه به این نام ها


------------------------

malloc
سه شنبه 26 دی 1391, 17:27 عصر
بله من تعداد ستونها رو میدونم اسم فیلدهام رو میخوام لینک کنم محتویات فایل لینک نیستن.
مثلا یه کاربر یه فایل انتخاب می کنه با که 4 ستون داره : موبایل - پیشوند - متن - امضا
نمونه فایل رو از لینک زیر دانلود کنید
http://www.kohan-co.net/i.zip
4 تا لینک به فرم اضافه بشه به این نام ها


------------------------

خوب حالا مثلا فکر کن رو لینک موبایل کلیک کرد حالا میخوای چیکار کنی ؟؟؟

ضمنا فرقی نمیکنه تو فکر کن همشون لینکه . خوب تمپلیت درست کن و همشونو لینک بزار .

masoud60
سه شنبه 26 دی 1391, 17:47 عصر
محتویات فایل رو من نمیدونم هر کاربری فایلی رو که میخواد رو درست میکنه و انتخاب میکنه فقط حتما باید یکی از ستونها موبایل باشه.
من میتونم به کل این موبایلها sms بزنم ولی بصورت متفاوت مثل نمونه زیر:(x,y,z ستونهای من هستن)
آقای x فردا ساعت y در مکان z باشید.
ارسال هوشمند sms میخوام بسازم

---------------
http://www.kohan-co.net

malloc
سه شنبه 26 دی 1391, 17:53 عصر
الان پست بزار میدونم دوستان میان و میگن چرا پست الکی میزاری و ...... اما قصدم کمک کردنه و سوالایی که میپرسم واسه اینه که روشن بشم و بتونم کمکتون کنم.

حالا سوال من اینه شما میخوایید شماره تلفن رو تو گرید ویو لینک قرار بدید . حالا وقتی رو لینک کلیک میکنه چی میشه ؟؟؟؟

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

masoud60
سه شنبه 26 دی 1391, 18:25 عصر
الان پست بزار میدونم دوستان میان و میگن چرا پست الکی میزاری و ...... اما قصدم کمک کردنه و سوالایی که میپرسم واسه اینه که روشن بشم و بتونم کمکتون کنم.


ممنون که وقتتون رو گذاشتین


حالا سوال من اینه شما میخوایید شماره تلفن رو تو گرید ویو لینک قرار بدید . حالا وقتی رو لینک کلیک میکنه چی میشه ؟؟؟؟

فرقی نمیکنه کجا باشه فقط میخوام لینک باشند و بتونه ترتیب رو انتخاب کنه من فقط سطر اول رو که header ستونها هستند رو نمایش خواهم داد نه کل اطلاعات رو.


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

بله آشنایی دارم و بیشتر با گرید ویو کار کردم

masoud60
سه شنبه 03 بهمن 1391, 12:31 عصر
با سلام

نتیجه نهایی رو خواستم به همه اطلاع بدم تا هر کسی به چنین مشکلی برخورد معطل نمونه.ابتدا فایل xls رو از کاربر می گیرم و اطلاعات رو میخونم :
DataTable dt = sms.GetExcelInfo(path); // get excel data
Session["xlstemp"] = dt;
HttpContext.Current.ApplicationInstance.CompleteRe quest();
Response.Redirect("Send2.aspx", false);

در صفحه بعدی بصورت کد زیر هر تعداد که ستون داشته باشم linkbutton ایجاد می کنم و کد مورد نظرم رو داخل event مربوطه می نویسم :چشمک:

void Page_Init(object sender, EventArgs e)
{
DataTable dt = (DataTable)Session["xlstemp"];
int i = 1;
foreach (DataColumn column in dt.Columns)
{
LinkButton lb = new LinkButton();
lb.Text = column.ColumnName;
lb.ID = "lb" + i.ToString();
lb.CommandArgument = Convert.ToString(i);
lb.CommandName = Convert.ToString(i);
lb.Command += new CommandEventHandler(lb_Command);

PlaceHolder1.Controls.Add(lb);
PlaceHolder1.Controls.Add(new LiteralControl("&nbsp;&nbsp;"));
i++;
}
}

protected void lb_Command(object sender, CommandEventArgs e)
{
object v = e.CommandArgument;
txtbody.Text += v ;
...
}


http://www.kohan-co.net