PDA

View Full Version : ویرایش عکس در gridview با fileupload



mahmata
چهارشنبه 10 تیر 1394, 13:53 عصر
سلام
من توی gridview یه ستون عکس دارم و میخوام توی حالت ویرایش که میره، template فایل آپلود نمایش داده بشه!
یه ستون دیگه به نام سایت دارم و وقتی ویرایش رو میزنم دو تا textbox رو نشون میده کدش رو به صورت زیر نوشتم
string siteNm = ((TextBox)GridView1.Rows[e.RowIndex].Cells[16].Controls[1]).Text;
string siteAddr = ((TextBox)GridView1.Rows[e.RowIndex].Cells[16].Controls[3]).Text;

بعدم برای آپدیت اینو نوشتم
cmd.Parameters.AddWithValue("@8", siteNm);
cmd.Parameters.AddWithValue("@9", siteAddr);
ولی برای فایل آپلود نمیدونم چه جوری باید کدش رو بنوسم؟

mbasirati
پنج شنبه 11 تیر 1394, 00:54 صبح
سلام
به شخصه از گریدویو بیزارم. من فقط از لیست ویو و ریپیتر استفاده می کنم.
چون به راحتی تمام کد اچ تی ام ال دست خودمه و تگای اضافه و بیخود تولید نمیکنه سمت کلاینت.
اگه از لیست ویو استفاده کنی به نظر من بهتره. یه نمونه کد میذارم ببین:

<asp:ListView ID="lvSlideShow" runat="server" DataSourceID="sdsSlideShow" ItemPlaceholderID="contentListView" DataKeyNames="SlideId">
<EmptyDataTemplate>
<div class="alert alert-info">اطلاعاتی برای نمایش وجود ندارد!</div>
</EmptyDataTemplate>
<LayoutTemplate>
<table id="slideshow" class="table table-striped table-condensed">
<thead>
<tr>
<th style="width: 50px">
<asp:CheckBox ID="chkSelectAll" runat="server" /></th>
<th style="width: 140px">عکس</th>
<th>عنوان اسلاید</th>
<th>آدرس</th>
<th style="width: 120px"></th>


</tr>
</thead>
<tbody>
<tr runat="server" id="contentListView"></tr>
</tbody>
</table>
</LayoutTemplate>
<ItemTemplate>
<tr>
<td>
<asp:CheckBox ID="chkSelectRow" ToolTip='<%# Eval("SlideId") %>' runat="server" /></td>
<td>
<img src='../upload/thumb-<%# Eval("SlideImg") %>' />
</td>
<td><%# Eval("SlideTitle_fa") %></td>
<td class="ltr"><%# Eval("DestinationUrl") %></td>
<td>
<asp:LinkButton ClientIDMode="AutoID" ID="lkBtnEdit" CssClass="btn btn-xs btn-primary" CommandName="edit" CommandArgument='<%# Eval("SlideId") %>' runat="server"><i class="icon-pencil"></i></asp:LinkButton>


<asp:LinkButton ClientIDMode="AutoID" ID="lkBtnDelete" CssClass="btn btn-xs btn-danger " OnClientClick="return confirm('آیا می خواهید این اسلاید را حذف کنید؟')" CommandName="delete" CommandArgument='<%# Eval("SlideId") %>' runat="server"><i class="icon-trash"></i></asp:LinkButton></td>
</tr>
</ItemTemplate>
<EditItemTemplate>
<tr>
<td>
<asp:CheckBox ID="chkSelectRow" runat="server" /></td>
<td>
<asp:Image runat="server" ID="ShowImage" ImageUrl='<%# "../upload/thumb-"+ Eval("SlideImg") %>' />


</td>
<td>
<asp:TextBox ID="txtEditSlideTitle_fa" CssClass="form-control" runat="server" Text='<%# Bind("SlideTitle_fa") %>'></asp:TextBox>
</td>
<td class="ltr">
<asp:TextBox ID="txtEditSlideUrl" CssClass="form-control" runat="server" Text='<%# Bind("DestinationUrl") %>'></asp:TextBox></td>
<td>
<asp:LinkButton ID="lBtnUpdate" ClientIDMode="AutoID" CssClass="btn btn-xs btn-success" CommandName="update" CommandArgument='<%# Eval("SlideId") %>' runat="server"><i class="icon-ok"></i></asp:LinkButton>
<asp:LinkButton ID="lBtnCancel" CssClass="btn btn-xs btn-default" CommandName="cancel" ClientIDMode="AutoID" CommandArgument='<%# Eval("SlideId") %>' runat="server"><i class="icon-remove"></i></asp:LinkButton></td>


</tr>
</EditItemTemplate>
</asp:ListView>


حالا به سادگی میتونی مدیریت کنی که وقتی یه سطر به حالت ویرایش میره چه کنترلی باید نمایش داده بشه. میتونی تو حالت ادیت، یه فایل آپلود بذاری و راحت توی کد بیهایند بررسی کنی اگه تو حالت ادیت بودی و فایل آپلود فایلی داشت به جای فایل قبلی تو دیتابیس جایگزین بشه و گرنه که تغییر نکنه.

mahmata
جمعه 12 تیر 1394, 15:27 عصر
سلام
به شخصه از گریدویو بیزارم. من فقط از لیست ویو و ریپیتر استفاده می کنم.
چون به راحتی تمام کد اچ تی ام ال دست خودمه و تگای اضافه و بیخود تولید نمیکنه سمت کلاینت.
اگه از لیست ویو استفاده کنی به نظر من بهتره. یه نمونه کد میذارم ببین:

<asp:ListView ID="lvSlideShow" runat="server" DataSourceID="sdsSlideShow" ItemPlaceholderID="contentListView" DataKeyNames="SlideId">
<EmptyDataTemplate>
<div class="alert alert-info">اطلاعاتی برای نمایش وجود ندارد!</div>
</EmptyDataTemplate>
<LayoutTemplate>
<table id="slideshow" class="table table-striped table-condensed">
<thead>
<tr>
<th style="width: 50px">
<asp:CheckBox ID="chkSelectAll" runat="server" /></th>
<th style="width: 140px">عکس</th>
<th>عنوان اسلاید</th>
<th>آدرس</th>
<th style="width: 120px"></th>


</tr>
</thead>
<tbody>
<tr runat="server" id="contentListView"></tr>
</tbody>
</table>
</LayoutTemplate>
<ItemTemplate>
<tr>
<td>
<asp:CheckBox ID="chkSelectRow" ToolTip='<%# Eval("SlideId") %>' runat="server" /></td>
<td>
<img src='../upload/thumb-<%# Eval("SlideImg") %>' />
</td>
<td><%# Eval("SlideTitle_fa") %></td>
<td class="ltr"><%# Eval("DestinationUrl") %></td>
<td>
<asp:LinkButton ClientIDMode="AutoID" ID="lkBtnEdit" CssClass="btn btn-xs btn-primary" CommandName="edit" CommandArgument='<%# Eval("SlideId") %>' runat="server"><i class="icon-pencil"></i></asp:LinkButton>


<asp:LinkButton ClientIDMode="AutoID" ID="lkBtnDelete" CssClass="btn btn-xs btn-danger " OnClientClick="return confirm('آیا می خواهید این اسلاید را حذف کنید؟')" CommandName="delete" CommandArgument='<%# Eval("SlideId") %>' runat="server"><i class="icon-trash"></i></asp:LinkButton></td>
</tr>
</ItemTemplate>
<EditItemTemplate>
<tr>
<td>
<asp:CheckBox ID="chkSelectRow" runat="server" /></td>
<td>
<asp:Image runat="server" ID="ShowImage" ImageUrl='<%# "../upload/thumb-"+ Eval("SlideImg") %>' />


</td>
<td>
<asp:TextBox ID="txtEditSlideTitle_fa" CssClass="form-control" runat="server" Text='<%# Bind("SlideTitle_fa") %>'></asp:TextBox>
</td>
<td class="ltr">
<asp:TextBox ID="txtEditSlideUrl" CssClass="form-control" runat="server" Text='<%# Bind("DestinationUrl") %>'></asp:TextBox></td>
<td>
<asp:LinkButton ID="lBtnUpdate" ClientIDMode="AutoID" CssClass="btn btn-xs btn-success" CommandName="update" CommandArgument='<%# Eval("SlideId") %>' runat="server"><i class="icon-ok"></i></asp:LinkButton>
<asp:LinkButton ID="lBtnCancel" CssClass="btn btn-xs btn-default" CommandName="cancel" ClientIDMode="AutoID" CommandArgument='<%# Eval("SlideId") %>' runat="server"><i class="icon-remove"></i></asp:LinkButton></td>


</tr>
</EditItemTemplate>
</asp:ListView>


حالا به سادگی میتونی مدیریت کنی که وقتی یه سطر به حالت ویرایش میره چه کنترلی باید نمایش داده بشه. میتونی تو حالت ادیت، یه فایل آپلود بذاری و راحت توی کد بیهایند بررسی کنی اگه تو حالت ادیت بودی و فایل آپلود فایلی داشت به جای فایل قبلی تو دیتابیس جایگزین بشه و گرنه که تغییر نکنه.

خیلی ممنون از راهنماییتون