所以我正在学习ASP.NET,我试图创建一个连接到sqlite数据库的网页,并允许从网页修改该数据库。目前FindControl返回NULL并且我试图能够删除同一行中带有删除按钮的行。此表也将改变尺寸,因此我不确定如何制作它以使按钮和行始终对应。
另外,当我在开发人员工具和表格中查看页面时,第一列中每个元素的td标记的id格式为id =" Repeater1_id_0"然后id =" Repeater1_id_1"我正在测试是否可以让按钮在第三行工作,但我仍然无效。
以下是.aspx文件中网页数据库中表格的代码。
<asp:Repeater ID="Repeater1" runat="server" OnItemCommand="Repeater1_ItemCommand">
<HeaderTemplate>
<table border="1">
<tr>
<td><b>ID</b></td>
<td><b>Player</b></td>
<td><b>Points</b></td>
<td><b>Steals</b></td>
<td><b>Blocks</b></td>
<td><b>Assists</b></td>
<td><b>MPG</b></td>
<td><b>Shot %</b></td>
<td><b>3 Point %</b></td>
</tr>
</HeaderTemplate>
<ItemTemplate>
<tr>
<td runat="server" id="id"><%# DataBinder.Eval(Container.DataItem, "id") %> </td>
<td><%# DataBinder.Eval(Container.DataItem, "playername") %> </td>
<td><%# DataBinder.Eval(Container.DataItem, "points") %> </td>
<td><%# DataBinder.Eval(Container.DataItem, "steals") %> </td>
<td><%# DataBinder.Eval(Container.DataItem, "blocks") %> </td>
<td><%# DataBinder.Eval(Container.DataItem, "assists") %> </td>
<td><%# DataBinder.Eval(Container.DataItem, "MPG") %> </td>
<td><%# DataBinder.Eval(Container.DataItem, "shootingpercentage") %> </td>
<td><%# DataBinder.Eval(Container.DataItem, "threepointpercentage") %> </td>
<td><asp:Button ID="btnEdit" runat="server" Text="Edit" /></td>
<td><asp:Button ID="btnDelete" runat="server" Text="Delete" OnClick="btnDelete_click" /></td>
</tr>
</ItemTemplate>
<FooterTemplate>
</FooterTemplate>
</asp:Repeater>
现在这里是在aspx.cs文件中单击时删除按钮将执行的操作的代码。它没有用,但希望能够让我深入了解我想要做的事情。
protected void btnDelete_click(object sender, EventArgs e)
{
NBAPlayerRepository players = new NBAPlayerRepository();
HtmlGenericControl playerId = (HtmlGenericControl)Page.FindControl("Repeater1_id_2");
var id =Guid.Parse( playerId.ToString());
players.DeleteRecord(id);
DataTable table = players.GetAll();
this.Repeater1.DataSource = table;
this.Repeater1.DataBind();
}
我是这种东西的初学者,所以希望我没有把它打得太糟糕。
答案 0 :(得分:0)
在ASP.Net Repeater控件中处理按钮单击的正确方法是:
(1)适当地设置Button CommandName
参数,例如在您的情况下&#34;删除&#34;。
(2)处理Repeater控件上的ItemCommand
事件。检查事件参数对象上的CommandName
属性。如果这等于&#34;删除&#34;然后你可以处理删除,你可以通过查看事件参数对象的Item属性来获取数据(行)上下文。
正如其他人FindControl
已经提到的那样,只适用于服务器控件,并且无论如何都不建议使用转发器项的标识符格式。