提问人:Andx45t 提问时间:10/23/2023 最后编辑:marc_sAndx45t 更新时间:10/23/2023 访问量:36
ASP.NET 按钮不执行函数 RowCommand
ASP.NET button doesn't execute function RowCommand
问:
我在 ASPX 上使用 GridView 控制器上的按钮时遇到了一些麻烦。我只是无法让它工作。
这是我的网格视图:
<asp:GridView ID="tablaPgos" runat="server" AutoGenerateColumns="False" OnRowCommand="tablaPgos_RowCommand">
<columns>
<asp:BoundField DataField="idpago" HeaderText="Id" />
<asp:BoundField DataField="fechapago" HeaderText="Fecha de Pago" />
<asp:BoundField DataField="codigoestudiante" HeaderText="Codigo del Estudiante" />
<asp:BoundField DataField="nombre" HeaderText="Tipo de Pago" />
<asp:BoundField DataField="monto" HeaderText="Monto" />
<asp:TemplateField HeaderText="Acciones">
<itemtemplate>
<asp:Button ID="btnEliminar" runat="server" Text="Eliminar Pago" CommandName="Eliminar" CommandArgument='<%# Container.DataItemIndex %>'/>
</itemtemplate>
</asp:TemplateField>
</columns>
</asp:GridView>
数据加载完美,我使用API加载数据:
protected async void Page_Load(object sender, EventArgs e)
{
CargarTabla();
}
protected async Task CargarTabla()
{
string apiUrl = "http://localhost:5000/api/get/pagos";
try
{
HttpClient client = new HttpClient();
HttpResponseMessage response = client.GetAsync(apiUrl).Result;
if (response.IsSuccessStatusCode)
{
string jsonResponse = response.Content.ReadAsStringAsync().Result;
List<ListadoPagos> pagos = JsonConvert.DeserializeObject<List<ListadoPagos>>(jsonResponse);
tablaPgos.DataSource = pagos;
tablaPgos.DataBind();
}
else
{
// Manejar errores si la solicitud no es exitosa
}
}
catch (Exception ex)
{
Console.WriteLine(ex);
}
}
我在网格视图上有一个按钮:
<asp:TemplateField HeaderText="Acciones">
<itemtemplate>
<asp:Button ID="btnEliminar" runat="server" Text="Eliminar Pago" CommandName="Eliminar" CommandArgument='<%# Container.DataItemIndex %>'/>
</itemtemplate>
</asp:TemplateField>
当我单击它时,我需要它向 API 发出删除请求,但它不起作用。它没有向我显示任何错误或任何东西,似乎按钮甚至没有调用该函数。
这是我一直在尝试做的事情:
protected async void tablaPgos_RowCommand(object sender, GridViewCommandEventArgs e)
{
if (e.CommandName == "Eliminar")
{
int rowIndex = Convert.ToInt32(e.CommandArgument);
int id = Convert.ToInt32(tablaPgos.DataKeys[rowIndex]["idpago"]);
await EliminarPagoAsync(id);
}
}
private async Task EliminarPagoAsync(int idPago)
{
try
{
using (var httpClient = new HttpClient())
{
string apiUrl = $"http://localhost:5000/api/delete/pago/{idPago}";
httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
HttpResponseMessage response = await httpClient.DeleteAsync(apiUrl);
if (response.IsSuccessStatusCode)
{
lblMensaje.Text = "Pago eliminado exitosamente.";
CargarTabla();
}
else
{
lblMensaje.Text = "Error al eliminar el pago. Por favor, intente nuevamente.";
CargarTabla();
}
}
}
catch (Exception ex)
{
lblMensaje.Text = "Error: " + ex.Message;
}
}
正如我所说,该按钮甚至不调用该函数。我尝试设置标签的文本只是为了确保问题不在于按钮,但是当我单击它时不会显示消息,因此我假设问题出在按钮上,而不是 API 或其他:(
protected async void tablaPgos_RowCommand(object sender, GridViewCommandEventArgs e)
{
if (e.CommandName == "Eliminar")
{
int rowIndex = Convert.ToInt32(e.CommandArgument);
lMensaje.Text = "Button Pressed";
}
}
如果您能提供帮助,我将不胜感激!
谢谢
答:
1赞
Josh
10/23/2023
#1
protected async void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
CargarTabla();
}
}
在每次回发时停止绑定(按钮单击等)
评论