View Full Version : نمایش ستونهای یک فایل اکسل بصورت لینک
masoud60
جمعه 22 دی 1391, 22: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, 20:19 عصر
چرا هیچ کس جواب نمیده زیاد سخت نیست:لبخند:
این کدها درست هستند مشکلی ندارند من اسم ستونها رو با lb نمایش میدم اینها رو چطوری روی لینکهای مختلف نمایش بدم.
-----------------------------
http://www.kohan-co.net
مهرداد صفا
یک شنبه 24 دی 1391, 00: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, 10:09 صبح
سلام
با این روش تونستم لینک رو اضافه کنم
foreach(DataColumn column indt.Columns)
{
Responce.Write(@"<a href=''>" + column.ColumnName + "</a>";
}
ولی من میخوام که event داشته باشم چون نسبت کلیک هر کدام کاری میخوام انجام بدم
malloc
سه شنبه 26 دی 1391, 12:02 عصر
خوب دوست عزیز تو اگه تعداد ستونهای فایل اکسل رو بدونی و نوعشون رو هم بدونی میتونی گریدویو رو به صورت تمپلیت طراحی کنی و اون ستونی که میدونی لینک داره رو یه linkbutton بزار و کارتو انجام بده
alihassanabadi
سه شنبه 26 دی 1391, 12: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, 18:14 عصر
خوب دوست عزیز تو اگه تعداد ستونهای فایل اکسل رو بدونی و نوعشون رو هم بدونی میتونی گریدویو رو به صورت تمپلیت طراحی کنی و اون ستونی که میدونی لینک داره رو یه linkbutton بزار و کارتو انجام بده
بله من تعداد ستونها رو میدونم اسم فیلدهام رو میخوام لینک کنم محتویات فایل لینک نیستن.
مثلا یه کاربر یه فایل انتخاب می کنه با که 4 ستون داره : موبایل - پیشوند - متن - امضا
نمونه فایل رو از لینک زیر دانلود کنید
http://www.kohan-co.net/i.zip
4 تا لینک به فرم اضافه بشه به این نام ها
------------------------
malloc
سه شنبه 26 دی 1391, 18:27 عصر
بله من تعداد ستونها رو میدونم اسم فیلدهام رو میخوام لینک کنم محتویات فایل لینک نیستن.
مثلا یه کاربر یه فایل انتخاب می کنه با که 4 ستون داره : موبایل - پیشوند - متن - امضا
نمونه فایل رو از لینک زیر دانلود کنید
http://www.kohan-co.net/i.zip
4 تا لینک به فرم اضافه بشه به این نام ها
------------------------
خوب حالا مثلا فکر کن رو لینک موبایل کلیک کرد حالا میخوای چیکار کنی ؟؟؟
ضمنا فرقی نمیکنه تو فکر کن همشون لینکه . خوب تمپلیت درست کن و همشونو لینک بزار .
masoud60
سه شنبه 26 دی 1391, 18:47 عصر
محتویات فایل رو من نمیدونم هر کاربری فایلی رو که میخواد رو درست میکنه و انتخاب میکنه فقط حتما باید یکی از ستونها موبایل باشه.
من میتونم به کل این موبایلها sms بزنم ولی بصورت متفاوت مثل نمونه زیر:(x,y,z ستونهای من هستن)
آقای x فردا ساعت y در مکان z باشید.
ارسال هوشمند sms میخوام بسازم
---------------
http://www.kohan-co.net
malloc
سه شنبه 26 دی 1391, 18:53 عصر
الان پست بزار میدونم دوستان میان و میگن چرا پست الکی میزاری و ...... اما قصدم کمک کردنه و سوالایی که میپرسم واسه اینه که روشن بشم و بتونم کمکتون کنم.
حالا سوال من اینه شما میخوایید شماره تلفن رو تو گرید ویو لینک قرار بدید . حالا وقتی رو لینک کلیک میکنه چی میشه ؟؟؟؟
و یه سوال دیگه دوست عزیز. هرچند جسارت نمیکنم خدمتون اما میخواستم بدونم شما با template در گریدویو یا دیتالیست آشنایی دارید یا نه؟؟؟
masoud60
سه شنبه 26 دی 1391, 19:25 عصر
الان پست بزار میدونم دوستان میان و میگن چرا پست الکی میزاری و ...... اما قصدم کمک کردنه و سوالایی که میپرسم واسه اینه که روشن بشم و بتونم کمکتون کنم.
ممنون که وقتتون رو گذاشتین
حالا سوال من اینه شما میخوایید شماره تلفن رو تو گرید ویو لینک قرار بدید . حالا وقتی رو لینک کلیک میکنه چی میشه ؟؟؟؟
فرقی نمیکنه کجا باشه فقط میخوام لینک باشند و بتونه ترتیب رو انتخاب کنه من فقط سطر اول رو که header ستونها هستند رو نمایش خواهم داد نه کل اطلاعات رو.
و یه سوال دیگه دوست عزیز. هرچند جسارت نمیکنم خدمتون اما میخواستم بدونم شما با template در گریدویو یا دیتالیست آشنایی دارید یا نه؟؟؟
بله آشنایی دارم و بیشتر با گرید ویو کار کردم
masoud60
سه شنبه 03 بهمن 1391, 13: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(" "));
i++;
}
}
protected void lb_Command(object sender, CommandEventArgs e)
{
object v = e.CommandArgument;
txtbody.Text += v ;
...
}
http://www.kohan-co.net
vBulletin® v4.2.5, Copyright ©2000-1403, Jelsoft Enterprises Ltd.