PDA

View Full Version : درخواست راهنمایی برای نمایش اطلاعات داخل گریدویو به صورت سفارشی



setareh2013
دوشنبه 23 دی 1392, 20:28 عصر
با سلام
من یک سری اطلاعات رو به صورت زیر داخل یک جدول با دو ستون ذخیره کرده ام
1 مورد یک
2 مورد 2
3 مورد 3
...
حالا می خوام هنگام نمایش به این صورت نشون بده :

مورد 1 ، مورد 2 ، مورد 3 ، ...
مثل این شکل
هر کدام از این موارد در واقع هایپرلینکی هستند که به صفحه ای خاص اشاره دارند . و حدود صد تا لینک هستند . من نمی تونم یکی یکی بشینم هایپرلینک ایجاد کنم ولینکشون بدم به یک صفحه .
من این هایپرلینک ها رو داخل پایگاه داده ذخیره کرده ام . می تونم داخل گریدویو همشونو نشون بدم ولی مشکل اینه که به صورت پشت سر هم نشونشون میده و سطر به سطر
چه کار کنم که مثل شکل زیر نشونشون بده
ممنون

setareh2013
دوشنبه 23 دی 1392, 23:39 عصر
کسی نمی تونه راهنماییم کنه ؟

vira1368
سه شنبه 24 دی 1392, 08:57 صبح
با استفاده از حلقه بیاین لینک ها رو وارد HTML کنید:

string[] names = { "google", "YAHOO", "msn" };
string[] links = { "google.com", "yahoo.com", "microsoft.com" };
for (int i = 0; i < 3; i++)
{
Response.Write("<a href='http://" + links[i] + "'>" + names[i] + "</a> | ");
}

ahmad156
سه شنبه 24 دی 1392, 20:13 عصر
از TemplateField (http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.templatefield%28v=vs.110 %29.aspx)استفاده کنین

setareh2013
سه شنبه 24 دی 1392, 22:01 عصر
بلدم از template filed استفاده کنم . ولی مشکل اینه که نمی دونم چه طوری این تمپلیت رو تنظیم کنم که اطلاعات رو کنار هم قرار بده .
ببینین من در پایگاه داده یک جدول دارم که مناسبت ها رو ذخیره کردم . مثلا سطر 1 : ولادت امام علی (ع) سطر 2 - ولادت ... سطر 3 - ولادت ... و ....
من داخل این تمپلیت یک دونه هایپرلینک میذارم ولی مشکل اینه که اطلاعات رو سطر به سطر نشون میده به این صورت :
ولادت امام علی (ع)
ولادت ...
ولادت ...
.
.
ولی میخوام کنار هم نشونشون بده و با یک کاما یا چیز دیگه جداشون کنه . این طوری : ولادت امام علی (ع) ، ولادت ... ، ولادت ، ...
حالا همه میگن تمپلیت . خب بگین چه طوری این تمپلیت رو به این صورت در بیارم
ممنون

setareh2013
سه شنبه 24 دی 1392, 22:13 عصر
این کدهامه
<asp:GridViewID="GridView2"runat="server"AutoGenerateColumns="False"
DataKeyNames="id"DataSourceID="SqlDataSource3">
<Columns>
<asp:HyperLinkFieldDataNavigateUrlFields="t"DataTextField="name"/>
</Columns>
<EmptyDataTemplate>
<tableclass="style1">
<tr>
<td>
<asp:HyperLinkID="HyperLink1"runat="server"NavigateUrl='<%# Eval("t") %>'
Text='<%# Eval("name") %>'></asp:HyperLink>
</td>
</tr>
<tr>
<td>
&nbsp;</td>
</tr>
</table>
</EmptyDataTemplate>
</asp:GridView>

ahmad156
سه شنبه 24 دی 1392, 22:28 عصر
<%@ Page Language="C#‎‎" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
<style>
.hp {
display: inline;
}
</style>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:Repeater runat="server" ID="rp">
<ItemTemplate>
<asp:HyperLink runat="server" ID="hp" CssClass="hp" NavigateUrl="#"><%# Eval("name") %></asp:HyperLink>
</ItemTemplate>
</asp:Repeater>
</div>
</form>
</body>
</html>
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.MobileControls;
using System.Web.UI.WebControls;
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
var items = new List<MyClass>();
for (int i = 0; i < 10; i++)
{
items.Add(new MyClass(){ name ="item-"+ i.ToString()});
}
rp.DataSource = items;
rp.DataBind();
}

}


} public class MyClass
{
private string _name;
public string name
{
get
{
return _name ?? "Name";
}
set
{
_name = value;
}
}
}

setareh2013
چهارشنبه 25 دی 1392, 00:00 صبح
ممنون خیلی لطف کردین درست شد
فقط عذرخواهی میکنم دوتا سوال دیگه هم داشتم . من کاما رو کجا بذارم که بین گزینه هام یه کاما بگذاره .
یکی دیگه اینکه من این ریپیتر رو که شما دادید داخل یک div با پهنای 200px قرار دادم ولی موقع اجرا باز همه ی موارد رو داخل یک سطر میگذاره چه کار کنم که وقتی پهنای اطلاعات موجود در ریپیتر از 200 پیکسل بیشتر شد خودکار بره خط بعد
ممنون

setareh2013
چهارشنبه 25 دی 1392, 22:51 عصر
میشه بگین چه کار کنم که همه اطلاعاتو داخل یک سطر نشون نده . می خوام وقتی عرض متن از 200پیکسل بیشتر شد بره خط بعد
با تشکر

ahmad156
چهارشنبه 25 دی 1392, 23:01 عصر
میشه بگین چه کار کنم که همه اطلاعاتو داخل یک سطر نشون نده . می خوام وقتی عرض متن از 200پیکسل بیشتر شد بره خط بعد
با تشکر
خب عرض اون رو 200px قرار بدین

setareh2013
چهارشنبه 25 دی 1392, 23:10 عصر
برای div پهنا رو برابر 200 پیکسل قرار دادم تاثیر ی نداشت . برای ریپیتر خاصیت width="200px" تعریف کردم خطای زیر رو داد
Error 2 Type 'System.Web.UI.WebControls.Repeater' does not have a public property named 'width'
.

ahmad156
چهارشنبه 25 دی 1392, 23:20 عصر
سورس رو به صورت فایل بذارین

setareh2013
چهارشنبه 25 دی 1392, 23:35 عصر
فایل رو نمی دونم چه طوری از اینجا بگذارم داخل این سایت
میشه راهنمایی کنید . گزینه attach نداره

ahmad156
پنج شنبه 26 دی 1392, 00:00 صبح
حالت پیشرفته (http://barnamenevis.org/newreply.php?do=postreply&t=436435) رو انتخاب کنین

setareh2013
پنج شنبه 26 دی 1392, 13:47 عصر
با تشکراز شما
فایلهامو اینجا گذاشتم . دیتابیس هم می فرستم

setareh2013
پنج شنبه 26 دی 1392, 19:44 عصر
کسی راهنماییم نمیکنه ؟

demolition
پنج شنبه 26 دی 1392, 21:39 عصر
با تشکراز شما
فایلهامو اینجا گذاشتم . دیتابیس هم می فرستم

شما باید با div یا table داخل <ItemTemplate> این کارو انجام بدید
اینجوری


<asp:Repeater runat="server" ID="Repeater2" DataSourceID="SqlDataSource3">
<ItemTemplate>
<table width="200px">
<tr>
<td width="200px"> <%--<asp:HyperLink runat="server" ID="hp" CssClass="hp" NavigateUrl="#"><%# Eval("mtitle") %></asp:HyperLink>--%>
<asp:HyperLink runat="server" ID="hp0" CssClass="hp" NavigateUrl='<%# Eval("mid","ShowImageInfo.aspx?ID={0}") %>'
Text='<%# Eval("mtitle") %>'></asp:HyperLink>
</td>
</tr>
</table>


</ItemTemplate>
</asp:Repeater>

ahmad156
پنج شنبه 26 دی 1392, 21:42 عصر
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>

</head>
<body >
<form id="form1" runat="server">
<div style="width: 200px">
<asp:Repeater runat="server" ID="rp" >
<ItemTemplate>
<asp:HyperLink runat="server" ID="hp" CssClass="hp" NavigateUrl="#"><%# Eval("name") %></asp:HyperLink>,
</ItemTemplate>
</asp:Repeater>
</div>
</form>
</body>
</html>



using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.MobileControls;
using System.Web.UI.WebControls;
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
var items = new List<MyClass>();
for (int i = 0; i < 30; i++)
{
items.Add(new MyClass() { name = "item-" + i.ToString() });
}
rp.DataSource = items;
rp.DataBind();
}

}
}
public class MyClass
{
private string _name;
public string name
{
get
{
return _name ?? "Name";
}
set
{
_name = value;
}
}
}

setareh2013
پنج شنبه 26 دی 1392, 21:55 عصر
مرسی این که گفتید رو اضافه کردم درست شد : <div style="width: 200px">
فقط یه مشکل دارم من همین استایل رو داخل کلاس css نوشتم و آی دی اون رو داخل div گذاشتم ولی تغییری نکرد و من فکر می کنم کد من هم مثل همین کد شماست پس چرا از من جواب نمیده ؟
<div id="kadrevasat2">
داخل کلاس css:
#kadrevasat2
{
position:relative;
width:200px;
top: -29px;
left: 7px;

ahmad156
پنج شنبه 26 دی 1392, 22:09 عصر
من امتحان میکنم مشکلی نداره.مشکل از جای دیگه هست حتماً