PDA

View Full Version : سوال: asp: ListView: onitemcommand



ســلما
یک شنبه 12 اردیبهشت 1395, 15:34 عصر
سلام دوستان

وقتی ListView رو با entitydatasource پر می کنم، مشکلی برای استفاده از CommandName و CommandArgument نیست:


<asp:ListView ID="AllCourseListView" runat="server" DataKeyNames="ID"
DataSourceID="CourseEntityDataSource" onitemcommand="AllCourseListView_ItemCommand">
<ItemTemplate>
<tr style="">
<td>
<asp:Label ID="CourseLabel" runat="server" Text='<%# LessonName(Eval("LessonID"))+" - "+TermName(Eval("TermID")) %>'></asp:Label>
</td>
<td>
<asp:Label ID="UniIDLabel" runat="server" Text='<%# UniName(Eval("UniID")) %>' />
</td>
<td>
<asp:Button ID="CourseSubmitRequestButton" runat="server" CommandName="CourseSubmitRequest" Text="درخواست ثبت نام" />
</td>
</tr>
</ItemTemplate>


asp:EntityDataSource ID="CourseEntityDataSource" runat="server"
ConnectionString="name=BREntities" DefaultContainerName="BREntities"
EnableDelete="True" EnableFlattening="False" EnableInsert="True"
EnableUpdate="True" EntitySetName="Courses">

کدبینهایند هم به این صورت


protected void AllCourseListView_ItemCommand(object sender, ListViewCommandEventArgs e)
{

if (e.CommandName == "CourseSubmitRequest")
{
CourseRequest CR = new CourseRequest();
CR.StuID = stuId;

ListViewDataItem item = (e.CommandSource as Button).NamingContainer as ListViewDataItem;
Label cId = (Label)item.FindControl("IDLabel");

CR.CourseID = Convert.ToInt16(cId.Text);

MyEntities.AddToCourseRequests(CR);
MyEntities.SaveChanges();
}
}

اما اگه از کنترل EntityDataSource استفاده نکنم و ListView رو به شکل زیر پر کنم


protected void Page_Load(object sender, EventArgs e)
{

var C = from c in br.Courses
select c;

ListView1.DataSource = C;
ListView1.DataBind();
}

دیگه اصلا وارد AllCourseListView_ItemCommand نمی شه! مشکل چیه؟

rezashaban
دوشنبه 13 اردیبهشت 1395, 01:57 صبح
سلام
برای اینکه این Event رو به اون object موردنظر اختصاص ندادی که فراخوانی بشه
روی اون آبجکت کلیک راست کن و در پنجره Properties قسمت Eventها ببین این ایونتش مقدار داره؟

ســلما
دوشنبه 13 اردیبهشت 1395, 02:11 صبح
سلام
برای اینکه این Event رو به اون object موردنظر اختصاص ندادی که فراخوانی بشه
روی اون آبجکت کلیک راست کن و در پنجره Properties قسمت Eventها ببین این ایونتش مقدار داره؟

سلام

مرسی آره داره

rezashaban
دوشنبه 13 اردیبهشت 1395, 02:38 صبح
لیست ویو دیتاها رو نمایش میده؟

ســلما
دوشنبه 13 اردیبهشت 1395, 02:43 صبح
لیست ویو دیتاها رو نمایش میده؟

آره نمایش می ده. اما با کلیک دکمه، صفحه بدون اجرای AllCourseListView_ItemCommand پست بک می شه

notlikeothers
دوشنبه 13 اردیبهشت 1395, 03:21 صبح
ListView1.DataSource = C.tolist();

اینطوری اصلاح کن ببین درست میشه

ســلما
دوشنبه 13 اردیبهشت 1395, 04:40 صبح
ListView1.DataSource = C.tolist();

اینطوری اصلاح کن ببین درست میشه

نه اینجوریم کار نمی کنه