如何在C#中删除FormView控件中的后续页面
我正在使用 FormView 控件,并且我已经成功地使除删除之外的几乎所有内容都正常工作。情况是这样的:
只要我第一次打开网页时网页首先加载该记录,我就可以删除formview显示的任何记录。如果我打开网页然后单击第 2、3、4 等页面,然后尝试删除其中一条记录,或者即使我返回第一页并尝试删除该记录,我也会得到一个对象 null参考。该引用是指我用作数据键和删除记录所需参数的 ID。在我看来,当我单击不同的页面时,ID 并未在绑定(<'%#GoalID %>') 中设置。
protected void goalsFormView_ItemDeleting(object sender, FormViewDeleteEventArgs e)
{
string strGoalID = e.Keys["GoalID"].ToString();
Guid goalID = new Guid(strGoalID);
string strTaskSetID = e.Keys["TaskSetID"].ToString();
Guid taskSetID = new Guid(strTaskSetID);
DeleteRecord(goalID, taskSetID); //call delete method
BindFormView(); //rebind details view to reflect changes made
}
<asp:FormView ID="goalsFormView" runat="server" AllowPaging="True"
CssClass="formView" DataKeyNames="GoalID, TaskSetID"
EmptyDataText="There is no data to display" HeaderText="Weekly Goals Form"
OnItemDeleting="goalsFormView_ItemDeleting"
OnItemUpdating="goalsFormView_ItemUpdating"
OnModeChanging="goalsFormView_ModeChanging"
OnPageIndexChanging="goalsFormView_PageIndexChanging">
<HeaderStyle BackColor="#1E3F7F" ForeColor="White" />
<ItemTemplate>
<table class="formView" style="width: 800px">
<tr>
<td>
Goal
</td>
<td style="width: 520px">
<asp:Label ID="weeklyGoalLabel" runat="server" Text='<%# Eval("WeeklyGoal") %>'></asp:Label>
</td>
<td>
</td>
</tr>
<tr>
<td>
</td>
<td style="width: 520px">
</td>
<td>
</td>
</tr>
<tr>
<td>
Tasks
</td>
<td style="width: 520px">
</td>
<td>
Estimated Hours
</td>
</tr>
<tr>
<td>
</td>
<td style="width: 520px">
</td>
<td>
</td>
</tr>
<tr>
<td>
1.
</td>
<td style="width: 520px">
<asp:Label ID="taskLabel1" runat="server" Text='<%# Eval("Task1") %>'></asp:Label>
</td>
<td>
<asp:Label ID="estHours1" runat="server" CssClass="hours"
Text='<%# Eval("T1EstimatedHours") %>'></asp:Label>
</td>
</tr>
<tr>
<td>
2.
</td>
<td style="width: 520px">
<asp:Label ID="taskLabel2" runat="server" Text='<%# Eval("Task2") %>'></asp:Label>
</td>
<td>
<asp:Label ID="estHours2" runat="server" CssClass="hours"
Text='<%# Eval("T2EstimatedHours") %>'></asp:Label>
</td>
</tr>
<tr>
<td>
3.
</td>
<td style="width: 520px">
<asp:Label ID="taskLabel3" runat="server" Text='<%# Eval("Task3") %>'></asp:Label>
</td>
<td>
<asp:Label ID="estHours3" runat="server" CssClass="hours"
Text='<%# Eval("T3EstimatedHours") %>'></asp:Label>
</td>
</tr>
<tr>
<td>
4.
</td>
<td style="width: 520px">
<asp:Label ID="taskLabel4" runat="server" Text='<%# Eval("Task4") %>'></asp:Label>
</td>
<td>
<asp:Label ID="estHours4" runat="server" CssClass="hours"
Text='<%# Eval("T4EstimatedHours") %>'></asp:Label>
</td>
</tr>
<tr>
<td>
5.
</td>
<td style="width: 520px">
<asp:Label ID="taskLabel5" runat="server" Text='<%# Eval("Task5") %>'></asp:Label>
</td>
<td>
<asp:Label ID="estHours5" runat="server" CssClass="hours"
Text='<%# Eval("T5EstimatedHours") %>'></asp:Label>
</td>
</tr>
<tr>
<td>
</td>
<td style="width: 520px">
<asp:LinkButton ID="editButton" runat="server" CommandName="Edit">Edit</asp:LinkButton>
<asp:LinkButton ID="deleteButton" runat="server" CommandName="Delete">Delete</asp:LinkButton>
</td>
<td>
</td>
</tr>
<tr>
<td class="invisibleRows" style="width: 40px">
Goal ID
</td>
<td class="invisibleRows" style="width: 520px">
<asp:Label ID="GoalID" runat="server" Text='<%# Bind("GoalID") %>'></asp:Label>
</td>
<td class="invisibleRows">
</td>
</tr>
<tr>
<td class="invisibleRows">
Task Set ID
</td>
<td class="invisibleRows" style="width: 520px">
<asp:Label ID="TaskSetID" runat="server" Text='<%# Bind("TaskSetID") %>'></asp:Label>
</td>
<td class="invisibleRows">
</td>
</tr>
</table>
</ItemTemplate>
<EditItemTemplate>
<table class="formView" style="width: 800px">
<tr>
<td>
Goal
</td>
<td style="width: 520px">
<asp:TextBox ID="WeeklyGoalUpdateBox" runat="server" CssClass="goalsandtasks"
Text='<%# Bind("WeeklyGoal") %>'></asp:TextBox>
</td>
<td>
</td>
</tr>
<tr>
<td>
</td>
<td style="width: 520px">
</td>
<td>
</td>
</tr>
<tr>
<td>
Tasks
</td>
<td style="width: 520px">
</td>
<td>
Estimated Hours
</td>
</tr>
<tr>
<td>
</td>
<td style="width: 520px">
</td>
<td>
</td>
</tr>
<tr>
<td>
1.
</td>
<td style="width: 520px">
<asp:TextBox ID="Task1UpdateBox" runat="server" CssClass="goalsandtasks"
Text='<%# Bind("Task1") %>'></asp:TextBox>
</td>
<td>
<asp:TextBox ID="estHours1UpdateBox" runat="server" CssClass="hours"
Text='<%# Bind("T1EstimatedHours") %>'></asp:TextBox>
</td>
</tr>
<tr>
<td>
2.
</td>
<td style="width: 520px">
<asp:TextBox ID="Task2UpdateBox" runat="server" CssClass="goalsandtasks"
Text='<%# Bind("Task2") %>'></asp:TextBox>
</td>
<td>
<asp:TextBox ID="estHours2UpdateBox" runat="server" CssClass="hours"
Text='<%# Bind("T2EstimatedHours") %>'></asp:TextBox>
</td>
</tr>
<tr>
<td>
3.
</td>
<td style="width: 520px">
<asp:TextBox ID="Task3UpdateBox" runat="server" CssClass="goalsandtasks"
Text='<%# Bind("Task3") %>'></asp:TextBox>
</td>
<td>
<asp:TextBox ID="estHours3UpdateBox" runat="server" CssClass="hours"
Text='<%# Bind("T3EstimatedHours") %>'></asp:TextBox>
</td>
</tr>
<tr>
<td>
4.
</td>
<td style="width: 520px">
<asp:TextBox ID="Task4UpdateBox" runat="server" CssClass="goalsandtasks"
Text='<%# Bind("Task4") %>'></asp:TextBox>
</td>
<td>
<asp:TextBox ID="estHours4UpdateBox" runat="server" CssClass="hours"
Text='<%# Bind("T4EstimatedHours") %>'></asp:TextBox>
</td>
</tr>
<tr>
<td>
5.
</td>
<td style="width: 520px">
<asp:TextBox ID="Task5UpdateBox" runat="server" CssClass="goalsandtasks"
Text='<%# Bind("Task5") %>'></asp:TextBox>
</td>
<td>
<asp:TextBox ID="estHours5UpdateBox" runat="server" CssClass="hours"
Text='<%# Bind("T5EstimatedHours") %>'></asp:TextBox>
</td>
</tr>
<tr>
<td>
</td>
<td style="width: 520px">
<asp:LinkButton ID="updateButton" runat="server" CommandName="Update">Update</asp:LinkButton>
<asp:LinkButton ID="cancelButton" runat="server" CommandName="Cancel">Cancel</asp:LinkButton>
</td>
<td>
</td>
</tr>
<tr>
<td class="invisibleRows" style="width: 40px">
Goal ID
</td>
<td class="invisibleRows" style="width: 520px">
<asp:Label ID="GoalIDUpdateLabel" runat="server" Text='<%# Bind("GoalID") %>'></asp:Label>
</td>
<td class="invisibleRows">
</td>
</tr>
<tr>
<td class="invisibleRows">
Task Set ID
</td>
<td class="invisibleRows" style="width: 520px">
<asp:Label ID="TaskSetIDUpdateLabel" runat="server"
Text='<%# Bind("TaskSetID") %>'></asp:Label>
</td>
<td class="invisibleRows">
</td>
</tr>
</table>
</EditItemTemplate>
</asp:FormView>
I am using a FormView control and I have been successful in getting pretty much everything working except delete. The situation is thus:
I can delete any record that the formview is showing as long as the web page loads that record first when I first open the webpage. If I open the web page then click page 2,3,4 or so on, and then try to delete one of those records, or even if I go back to the first page and try to delete that one, I get an object null reference. The reference refers to the ID that I'm using as a data key and required parameter to delete the record. It seems to me that the ID is not getting set in the bind(<'%#GoalID %>') when I click a different page.
protected void goalsFormView_ItemDeleting(object sender, FormViewDeleteEventArgs e)
{
string strGoalID = e.Keys["GoalID"].ToString();
Guid goalID = new Guid(strGoalID);
string strTaskSetID = e.Keys["TaskSetID"].ToString();
Guid taskSetID = new Guid(strTaskSetID);
DeleteRecord(goalID, taskSetID); //call delete method
BindFormView(); //rebind details view to reflect changes made
}
<asp:FormView ID="goalsFormView" runat="server" AllowPaging="True"
CssClass="formView" DataKeyNames="GoalID, TaskSetID"
EmptyDataText="There is no data to display" HeaderText="Weekly Goals Form"
OnItemDeleting="goalsFormView_ItemDeleting"
OnItemUpdating="goalsFormView_ItemUpdating"
OnModeChanging="goalsFormView_ModeChanging"
OnPageIndexChanging="goalsFormView_PageIndexChanging">
<HeaderStyle BackColor="#1E3F7F" ForeColor="White" />
<ItemTemplate>
<table class="formView" style="width: 800px">
<tr>
<td>
Goal
</td>
<td style="width: 520px">
<asp:Label ID="weeklyGoalLabel" runat="server" Text='<%# Eval("WeeklyGoal") %>'></asp:Label>
</td>
<td>
</td>
</tr>
<tr>
<td>
</td>
<td style="width: 520px">
</td>
<td>
</td>
</tr>
<tr>
<td>
Tasks
</td>
<td style="width: 520px">
</td>
<td>
Estimated Hours
</td>
</tr>
<tr>
<td>
</td>
<td style="width: 520px">
</td>
<td>
</td>
</tr>
<tr>
<td>
1.
</td>
<td style="width: 520px">
<asp:Label ID="taskLabel1" runat="server" Text='<%# Eval("Task1") %>'></asp:Label>
</td>
<td>
<asp:Label ID="estHours1" runat="server" CssClass="hours"
Text='<%# Eval("T1EstimatedHours") %>'></asp:Label>
</td>
</tr>
<tr>
<td>
2.
</td>
<td style="width: 520px">
<asp:Label ID="taskLabel2" runat="server" Text='<%# Eval("Task2") %>'></asp:Label>
</td>
<td>
<asp:Label ID="estHours2" runat="server" CssClass="hours"
Text='<%# Eval("T2EstimatedHours") %>'></asp:Label>
</td>
</tr>
<tr>
<td>
3.
</td>
<td style="width: 520px">
<asp:Label ID="taskLabel3" runat="server" Text='<%# Eval("Task3") %>'></asp:Label>
</td>
<td>
<asp:Label ID="estHours3" runat="server" CssClass="hours"
Text='<%# Eval("T3EstimatedHours") %>'></asp:Label>
</td>
</tr>
<tr>
<td>
4.
</td>
<td style="width: 520px">
<asp:Label ID="taskLabel4" runat="server" Text='<%# Eval("Task4") %>'></asp:Label>
</td>
<td>
<asp:Label ID="estHours4" runat="server" CssClass="hours"
Text='<%# Eval("T4EstimatedHours") %>'></asp:Label>
</td>
</tr>
<tr>
<td>
5.
</td>
<td style="width: 520px">
<asp:Label ID="taskLabel5" runat="server" Text='<%# Eval("Task5") %>'></asp:Label>
</td>
<td>
<asp:Label ID="estHours5" runat="server" CssClass="hours"
Text='<%# Eval("T5EstimatedHours") %>'></asp:Label>
</td>
</tr>
<tr>
<td>
</td>
<td style="width: 520px">
<asp:LinkButton ID="editButton" runat="server" CommandName="Edit">Edit</asp:LinkButton>
<asp:LinkButton ID="deleteButton" runat="server" CommandName="Delete">Delete</asp:LinkButton>
</td>
<td>
</td>
</tr>
<tr>
<td class="invisibleRows" style="width: 40px">
Goal ID
</td>
<td class="invisibleRows" style="width: 520px">
<asp:Label ID="GoalID" runat="server" Text='<%# Bind("GoalID") %>'></asp:Label>
</td>
<td class="invisibleRows">
</td>
</tr>
<tr>
<td class="invisibleRows">
Task Set ID
</td>
<td class="invisibleRows" style="width: 520px">
<asp:Label ID="TaskSetID" runat="server" Text='<%# Bind("TaskSetID") %>'></asp:Label>
</td>
<td class="invisibleRows">
</td>
</tr>
</table>
</ItemTemplate>
<EditItemTemplate>
<table class="formView" style="width: 800px">
<tr>
<td>
Goal
</td>
<td style="width: 520px">
<asp:TextBox ID="WeeklyGoalUpdateBox" runat="server" CssClass="goalsandtasks"
Text='<%# Bind("WeeklyGoal") %>'></asp:TextBox>
</td>
<td>
</td>
</tr>
<tr>
<td>
</td>
<td style="width: 520px">
</td>
<td>
</td>
</tr>
<tr>
<td>
Tasks
</td>
<td style="width: 520px">
</td>
<td>
Estimated Hours
</td>
</tr>
<tr>
<td>
</td>
<td style="width: 520px">
</td>
<td>
</td>
</tr>
<tr>
<td>
1.
</td>
<td style="width: 520px">
<asp:TextBox ID="Task1UpdateBox" runat="server" CssClass="goalsandtasks"
Text='<%# Bind("Task1") %>'></asp:TextBox>
</td>
<td>
<asp:TextBox ID="estHours1UpdateBox" runat="server" CssClass="hours"
Text='<%# Bind("T1EstimatedHours") %>'></asp:TextBox>
</td>
</tr>
<tr>
<td>
2.
</td>
<td style="width: 520px">
<asp:TextBox ID="Task2UpdateBox" runat="server" CssClass="goalsandtasks"
Text='<%# Bind("Task2") %>'></asp:TextBox>
</td>
<td>
<asp:TextBox ID="estHours2UpdateBox" runat="server" CssClass="hours"
Text='<%# Bind("T2EstimatedHours") %>'></asp:TextBox>
</td>
</tr>
<tr>
<td>
3.
</td>
<td style="width: 520px">
<asp:TextBox ID="Task3UpdateBox" runat="server" CssClass="goalsandtasks"
Text='<%# Bind("Task3") %>'></asp:TextBox>
</td>
<td>
<asp:TextBox ID="estHours3UpdateBox" runat="server" CssClass="hours"
Text='<%# Bind("T3EstimatedHours") %>'></asp:TextBox>
</td>
</tr>
<tr>
<td>
4.
</td>
<td style="width: 520px">
<asp:TextBox ID="Task4UpdateBox" runat="server" CssClass="goalsandtasks"
Text='<%# Bind("Task4") %>'></asp:TextBox>
</td>
<td>
<asp:TextBox ID="estHours4UpdateBox" runat="server" CssClass="hours"
Text='<%# Bind("T4EstimatedHours") %>'></asp:TextBox>
</td>
</tr>
<tr>
<td>
5.
</td>
<td style="width: 520px">
<asp:TextBox ID="Task5UpdateBox" runat="server" CssClass="goalsandtasks"
Text='<%# Bind("Task5") %>'></asp:TextBox>
</td>
<td>
<asp:TextBox ID="estHours5UpdateBox" runat="server" CssClass="hours"
Text='<%# Bind("T5EstimatedHours") %>'></asp:TextBox>
</td>
</tr>
<tr>
<td>
</td>
<td style="width: 520px">
<asp:LinkButton ID="updateButton" runat="server" CommandName="Update">Update</asp:LinkButton>
<asp:LinkButton ID="cancelButton" runat="server" CommandName="Cancel">Cancel</asp:LinkButton>
</td>
<td>
</td>
</tr>
<tr>
<td class="invisibleRows" style="width: 40px">
Goal ID
</td>
<td class="invisibleRows" style="width: 520px">
<asp:Label ID="GoalIDUpdateLabel" runat="server" Text='<%# Bind("GoalID") %>'></asp:Label>
</td>
<td class="invisibleRows">
</td>
</tr>
<tr>
<td class="invisibleRows">
Task Set ID
</td>
<td class="invisibleRows" style="width: 520px">
<asp:Label ID="TaskSetIDUpdateLabel" runat="server"
Text='<%# Bind("TaskSetID") %>'></asp:Label>
</td>
<td class="invisibleRows">
</td>
</tr>
</table>
</EditItemTemplate>
</asp:FormView>
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我找到了我的问题的答案。而不是使用 e.Keys["GoalID"].ToString();
我尝试了 ((Label)goalsFormView.FindControl("GoalID")).Text。
尽管我明白了这一点,但我仍然欢迎回答为什么 e.Keys... 不起作用。谢谢。
I figured out the answer to my question. Rather than using e.Keys["GoalID"].ToString();
I tried ((Label)goalsFormView.FindControl("GoalID")).Text.
Although I figured this out, I still welcome answers as to why e.Keys... didn't work. Thank you.