PDA

View Full Version : سوال: سوال در زمان ویرایش و حذف در GridView



davidrobert
جمعه 11 فروردین 1396, 00:41 صبح
در مرحله آخر کارم از این دستور استفاده کردم الان با مشکل بر خورد کردم.
اول خطای که نمایش میده این هستش.
144803

و دستوراتی که استفاده میکنم اینها هستن.

<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder2" runat="server">
<center>
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataSourceID="SqlDataSource1"
DataKeyNames="KH_ID" OnRowDataBound="OnRowDataBound" EmptyDataText="No records has been added.">
<Columns>
<asp:BoundField DataField="KH_ID" HeaderText="شناسه" ItemStyle-Width="150" InsertVisible="False" ReadOnly="True" SortExpression="KH_ID" />
<asp:BoundField DataField="KH_Title" HeaderText="عنوان" ItemStyle-Width="150" SortExpression="KH_Title" />
<asp:BoundField DataField="KH_Mozo" HeaderText="موضوع" SortExpression="KH_Mozo" />
<asp:BoundField DataField="KH_Full_News" HeaderText="مطلب" SortExpression="KH_Full_News" />
<asp:BoundField DataField="KH_Date" HeaderText="تاریخ" SortExpression="KH_Date" />
<asp:BoundField DataField="KH_Time" HeaderText="زمان" SortExpression="KH_Time" />
<asp:CommandField ButtonType="Link" ShowEditButton="true" ShowDeleteButton="true" ItemStyle-Width="100" />
</Columns>
</asp:GridView>
</center>
<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:DBNewsConnectionString %>"
SelectCommand="SELECT [KH_ID], [KH_Title], [KH_Mozo], [KH_Full_News], [KH_Date], [KH_Time] FROM [Tbl_Khebername] ORDER BY [KH_ID] DESC"
UpdateCommand="UPDATE [Tbl_Khebername] SET [KH_Title] = @KH_Title, [KH_Mozo] = @KH_Mozo, [KH_Full_News] = @KH_Full_News, [KH_Date] = @KH_Date, [KH_Time] = @KH_Time WHERE [KH_ID] = @original_KH_ID AND (([KH_Title] = @original_KH_Title) OR ([KH_Title] IS NULL AND @original_KH_Title IS NULL)) AND (([KH_Mozo] = @original_KH_Mozo) OR ([KH_Mozo] IS NULL AND @original_KH_Mozo IS NULL)) AND (([KH_Full_News] = @original_KH_Full_News) OR ([KH_Full_News] IS NULL AND @original_KH_Full_News IS NULL)) AND (([KH_Date] = @original_KH_Date) OR ([KH_Date] IS NULL AND @original_KH_Date IS NULL)) AND (([KH_Time] = @original_KH_Time) OR ([KH_Time] IS NULL AND @original_KH_Time IS NULL))"
DeleteCommand="DELETE FROM [Tbl_Khebername] WHERE [KH_ID] = @original_KH_ID AND (([KH_Title] = @original_KH_Title) OR ([KH_Title] IS NULL AND @original_KH_Title IS NULL)) AND (([KH_Mozo] = @original_KH_Mozo) OR ([KH_Mozo] IS NULL AND @original_KH_Mozo IS NULL)) AND (([KH_Full_News] = @original_KH_Full_News) OR ([KH_Full_News] IS NULL AND @original_KH_Full_News IS NULL)) AND (([KH_Date] = @original_KH_Date) OR ([KH_Date] IS NULL AND @original_KH_Date IS NULL)) AND (([KH_Time] = @original_KH_Time) OR ([KH_Time] IS NULL AND @original_KH_Time IS NULL))" ConflictDetection="CompareAllValues" OldValuesParameterFormatString="original_{0}">

<UpdateParameters>
<asp:Parameter Name="KH_Title" Type="String" />
<asp:Parameter Name="KH_Mozo" Type="String" />
<asp:Parameter Name="KH_Full_News" Type="String" />
<asp:Parameter Name="KH_Date" Type="String" />
<asp:Parameter Name="KH_Time" Type="String" />
<asp:Parameter Name="original_KH_ID" Type="Int32" />
<asp:Parameter Name="original_KH_Title" Type="String" />
<asp:Parameter Name="original_KH_Mozo" Type="String" />
<asp:Parameter Name="original_KH_Full_News" Type="String" />
<asp:Parameter Name="original_KH_Date" Type="String" />
<asp:Parameter Name="original_KH_Time" Type="String" />
</UpdateParameters>
<DeleteParameters>
<asp:Parameter Name="original_KH_ID" Type="Int32" />
<asp:Parameter Name="original_KH_Title" Type="String" />
<asp:Parameter Name="original_KH_Mozo" Type="String" />
<asp:Parameter Name="original_KH_Full_News" Type="String" />
<asp:Parameter Name="original_KH_Date" Type="String" />
<asp:Parameter Name="original_KH_Time" Type="String" />
</DeleteParameters>
</asp:SqlDataSource>
</asp:Content>




ای دستور که خطا میده در این قسمت می باشد.

protected void OnRowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow && GridView1.EditIndex != e.Row.RowIndex)
{
(e.Row.Cells[6].Controls[6] as LinkButton).Attributes["onclick"] = "return confirm('Do you want to delete this row?');";
}
}

از این دستور میده داره خطا میگیره که من بهش معرفی کردم ستون 6 من دکمه حذف و ویرایش رو داره.
ولی همچن
ان این خطا میده و بهم نه امکان ویرایش میده و نه حذف ولی اطلاعات بهم نشان میده.

(e.Row.Cells[6].Controls[6] as LinkButton).Attributes["onclick"] = "return confirm('Do you want to delete this row?');";


ممنون بابت کمکتان

Mahmoud.Afrad
جمعه 11 فروردین 1396, 03:18 صبح
در RowDataBound ابتدا چک کنید سطر دارای اطلاعات باشد. بعد هم چون اندیس رو شاید نتونید پیدا کنید حلقه بزنید روی سلولها و کنترل ها
if (e.Row.RowType != DataControlRowType.DataRow) return;
foreach (TableCell cell in e.Row.Cells)
{
foreach (LinkButton button in cell.Controls.OfType<LinkButton>())
{
if (button.CommandName == "Delete")
{
button.Attributes["onclick"] = "return confirm('Do you want to delete this row?');";
}
}
}