У меня есть gridview, что я добавил ItemTemplate для отображения флажка для каждой строки. Я пытаюсь просто удалить строки, проверенные в коде за файлом. Моя проблема в том, что мой код позади не обнаруживает флажок. Это очень странно, потому что я чувствую, что ничего не изменил, но код больше не работает (он работал два дня назад, но локально сохранил эти изменения - не загружался в TFS).Удалить отмеченные строки из GridView
GridView (EDITED ВКЛЮЧИТЬ ОБЯЗАТЕЛЬНОЕ):
<%--Data Grid--%>
<asp:GridView ID="Grid_Recipe" CssClass="gridMain" runat="server" OnSelectedIndexChanged="Grid_Recipe_SelectedIndexChanged" AutoGenerateColumns="False" DataKeyNames="Recipe_ID" DataSourceID="DataSource_Grid_Unfiltered" EnableViewState="True" AllowPaging="True" AllowSorting="True" BorderStyle="Solid" BorderWidth="1px" CellPadding="1" CellSpacing="1" HorizontalAlign="Center">
<AlternatingRowStyle BackColor="#CCFFFF" />
<Columns>
<asp:CommandField ShowSelectButton="True" SelectText="Edit" />
<asp:TemplateField HeaderText="Select">
<ItemTemplate>
<asp:CheckBox ID="deleteCheckbox" runat="server" />
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField DataField="Recipe_ID" HeaderText="Recipe_ID" InsertVisible="False" ReadOnly="True" SortExpression="Recipe_ID" Visible="false" />
<asp:BoundField DataField="Name" HeaderText="Name" SortExpression="Name" />
<asp:BoundField DataField="Difficulty" HeaderText="Difficulty" SortExpression="Difficulty" />
<asp:BoundField DataField="Meal" HeaderText="Meal" SortExpression="Meal" />
<asp:BoundField DataField="Cook_Time" HeaderText="Cook Time" SortExpression="Cook_Time" />
<asp:BoundField DataField="Directions" HeaderText="Directions" SortExpression="Directions" />
</Columns>
<HeaderStyle BackColor="#0096D6" ForeColor="White" HorizontalAlign="Right" />
</asp:GridView>
<%--Delete Button--%>
<asp:Button runat="server" ID="deleteButton" Text="Delete Checked" OnClick="DeleteRows" />
<%--Data Sources--%>
<asp:SqlDataSource ID="Meal_Filter" runat="server" ConnectionString="<%$ ConnectionStrings:LYNNAU_ConnectionString %>" SelectCommand="SELECT DISTINCT [Meal] FROM [Recipe]"></asp:SqlDataSource>
<asp:SqlDataSource ID="DataSource_Grid_Unfiltered" runat="server" ConnectionString="<%$ ConnectionStrings:LYNNAU_ConnectionString %>" SelectCommand="SELECT * FROM [Recipe]" UpdateCommand="UPDATE [Recipe] SET [Name] = @Name, [Difficulty] = @Difficulty, [Meal] = @Meal, [Cook_Time] = @Cook_Time, [Directions] = @Directions WHERE [Recipe_ID] = @Recipe_ID">
<DeleteParameters>
<asp:Parameter Name="Recipe_ID" Type="Int32" />
</DeleteParameters>
<UpdateParameters>
<asp:Parameter Name="Name" Type="String" />
<asp:Parameter Name="Difficulty" Type="String" />
<asp:Parameter Name="Meal" Type="String" />
<asp:Parameter Name="Cook_Time" Type="Int32" />
<asp:Parameter Name="Directions" Type="String" />
<asp:Parameter Name="Recipe_ID" Type="Int32" />
</UpdateParameters>
</asp:SqlDataSource>
<asp:SqlDataSource ID="DataSource_Grid_Meal" runat="server" ConnectionString="<%$ ConnectionStrings:LYNNAU_ConnectionString %>" SelectCommand="SELECT * FROM [Recipe] WHERE ([Meal] = @Meal)" UpdateCommand="UPDATE [Recipe] SET [Name] = @Name, [Difficulty] = @Difficulty, [Meal] = @Meal, [Cook_Time] = @Cook_Time, [Directions] = @Directions WHERE [Recipe_ID] = @Recipe_ID">
<DeleteParameters>
<asp:Parameter Name="Recipe_ID" Type="Int32" />
</DeleteParameters>
<SelectParameters>
<asp:ControlParameter ControlID="Meal_DDL" Name="Meal" PropertyName="SelectedValue" Type="String" />
</SelectParameters>
<UpdateParameters>
<asp:Parameter Name="Name" Type="String" />
<asp:Parameter Name="Difficulty" Type="String" />
<asp:Parameter Name="Meal" Type="String" />
<asp:Parameter Name="Cook_Time" Type="Int32" />
<asp:Parameter Name="Directions" Type="String" />
<asp:Parameter Name="Recipe_ID" Type="Int32" />
</UpdateParameters>
</asp:SqlDataSource>
Код За:
[WebMethod]
protected void DeleteRows(object sender, EventArgs e)
{
dbCRUD delete = new dbCRUD();
foreach(GridViewRow grd in Grid_Recipe.Rows)
{
if(grd.RowType == DataControlRowType.DataRow)
{
if((grd.FindControl("deleteCheckbox") as CheckBox).Checked)
{
string id = Grid_Recipe.DataKeys[grd.RowIndex].Value.ToString();
//int intID = Convert.ToInt32(Grid_Recipe.SelectedDataKey.Value);
int intID = int.Parse(id);
if(delete.DeleteRecord(intID) == 1)
{
resultsDelete.Text = "SQL Exception";
resultsDelete.Visible = true;
break;
}
else if(delete.DeleteRecord(intID) == 2)
{
resultsDelete.Text = "Non SQL Exception";
resultsDelete.Visible = true;
break;
}
else
{
resultsDelete.Text = "Record(s) deleted";
resultsDelete.Visible = true;
}
}
}
}
}
Все в моем коде, который будет препятствовать флажок от обнаружения? Я поставил точку останова на методе, и я добираюсь до того, где он проверяет проверку флажка, но после того, как он выполняет итерацию через каждую строку, никакие строки не обнаружены. Заранее спасибо!
Так все галочки найдены, но и не проверяется, верно? В этом случае вы можете показать код привязки вида сетки, желательно весь обработчик событий страницы, где это происходит? – Andrei
Просто добавил элементы управления исходным кодом. Я пытался привязать данные к сетке, если страница отправлена обратно, потому что я думал, что db уже будет обновлен, но это может быть неправильно. –