PDA

View Full Version : نمایش تصویر در دیتا گرید



faramarz_s
پنج شنبه 25 دی 1382, 20:01 عصر
مقاله زیر را پیدا کرده و تبدیل کد کردم:
http://aspalliance.com/141

// public _Default() { }
public DataSet ds1 = new DataSet();

public string FormatURL(string strArgument)
{
return ("News.aspx?img=" + strArgument);
}

private void Page_Load(object sender, System.EventArgs e)
{
if(!Page.IsPostBack)
{
bindToNews();
bindToimage();


void bindToimage()
{
string strCon = ConfigurationSettings.AppSettings["ConnStr"];
SqlConnection wg = new SqlConnection(strCon);

SqlDataAdapter dtAdap = new
SqlDataAdapter("select img_data from image where img_pk=1 ",wg);

//DataSet ds1 = new DataSet();
dtAdap.Fill(ds1, "image");

//Image2.DataBind();
DataGrid2.DataSource = dsetSales.Tables["image"].DefaultView;
DataGrid2.DataBind();
}

Server Error in '/edu/nahie' Application.
--------------------------------------------------------------------------------

Compilation Error
Description: An error occurred during the compilation of a resource required to service this request. Please review the following specific error details and modify your source code appropriately.

Compiler Error Message: CS1502: The best overloaded method match for 'nahie._Default.FormatURL(string)' has some invalid arguments

Source Error:



Line 116: <asp:TemplateColumn HeaderText="Image">
Line 117: <ItemTemplate>
Line 118: <asp:Image id="Image1" runat="server" ImageUrl='<%# FormatURL(DataBinder.Eval(ds1, "Tables[image].DefaultView.[0].img_pk")) %>'></asp:Image>
Line 119: </ItemTemplate>
Line 120: </asp:TemplateColumn>



کجای فرمت را اشتباه نوشته ام؟ :roll:
<asp:DataGrid id="DataGrid2" runat="server">
<Columns>
<asp:TemplateColumn HeaderText="Image">
<ItemTemplate>
<asp:Image id="Image1" runat="server" ImageUrl='<%# FormatURL(DataBinder.Eval(ds1, "Tables[image].DefaultView.[0].img_pk")) %>'></asp:Image>
</ItemTemplate>
</asp:TemplateColumn>
</Columns>
</asp:DataGrid>

Vahid_Nasiri
جمعه 26 دی 1382, 10:52 صبح
شما در مورد DataBinder.Eval کمی دچار مشکل مفهومی شده اید
این DataBinder.Eval کارش این است که فیلد مورد نظر از رکورد جاری را بر می گرداند .
حالا شما این فیلد را باید با یک تابع بگیرید و محتویات ْآنرا تغییر دهید و سپس مقدار جدید را بر گردانید.

faramarz_s
جمعه 26 دی 1382, 12:47 عصر
والا ده دفعه این سه خط را خوندم:

شما در مورد DataBinder.Eval کمی دچار مشکل مفهومی شده اید
ok

این فیلد را باید با یک تابع بگیرید

ImageUrl='<%# FormatURL


محتویات ْآنرا تغییر دهید

DataBinder.Eval(ds1, "Tables[image].DefaultView.[0].img_pk"))


سپس مقدار جدید را بر گردانید

ImageUrl='<%# FormatURL(DataBinder.Eval(ds1, "Tables[image].DefaultView.[0].img_pk")) %>'></
خدا می دونه می خواهم بفهمم نمی خواهم کسی برای من پروژه حل کنه :cry: اصلا غرورم اجازه نمی ده :-x
بنابراین کمک :mrgreen:

Vahid_Nasiri
جمعه 26 دی 1382, 12:55 عصر
فرض کنیم یک ستون template اضافه کرده اید به شکل زیر:


<asp:Label id="Label12" runat="server" Text='<%# DataBinder.Eval(((DataGridItem)Container).DataItem , "B_Day") %>'>
</asp:Label>

این B_Day فیلدی است که مقدار آن هر بار دریافت می شود

حالا تابعی که می خواهد آنرا استفاده کند باید ورودی اش از نوع object باشد :wink: و خروجی اش از نوع string