У меня есть вид сетки на моей главной странице, и я показываю некоторые данные для пользователя (с использованием метода BindGrid
). Этот вид сетки имеет несколько командных кнопок для каждой строки, которые выполняют некоторую операцию, например, Update
. когда пользователь нажимает кнопку обновления, я показываю ему/ей пользовательский элемент управления для обновления значений. И когда пользователь нажимает на обновление, я хочу привязать сетку к новым данным (я хочу, чтобы называть BindGrid
для новых данных). Как я могу это сделать и вызвать метод на главной странице с пользовательского элемента управления?Обновление главной страницы из пользовательского элемента управления
Edit 1)
Я написал этот код для пользовательского элемента управления:
public partial class SomeUserControl : System.Web.UI.UserControl
{
public event EventHandler StatusUpdated;
private void FunctionThatRaisesEvent()
{
if (this.StatusUpdated != null)
this.StatusUpdated(new object(), new EventArgs());
}
public void Page_Load(object sender, EventArgs e)
{
//....
}
protected void Button1_Click(object sender, EventArgs e)
{
FunctionThatRaisesEvent();
}
}
и конструктор для пользовательского элемента управления:
<%@ Control Language="C#" AutoEventWireup="true" CodeFile="SomeUserControl.ascx.cs" Inherits="SomeUserControl" %>
<asp:Button ID="Button1" runat="server" Text="Update" Height="70px"
onclick="Button1_Click" Width="183px" />
и добавьте этот код для главной страницы:
protected void Page_Load(object sender, EventArgs e)
{
}
protected void Unnamed1_Click(object sender, EventArgs e)
{
SomeUserControl userControl = (SomeUserControl)LoadControl("SomeUserControl.ascx");
userControl.StatusUpdated += new EventHandler(userControl_StatusUpdated);
Panel1.Controls.Add(userControl);
}
void userControl_StatusUpdated(object sender, EventArgs e)
{
GetDate();
}
private void GetDate()
{
TextBox1.Text = DateTime.Today.ToString();
}
и дизайнер для главной страницы:
<%@ Register src="SomeUserControl.ascx" tagname="SomeUserControl" tagprefix="uc1" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
<div>
<asp:UpdatePanel ID="upd1" runat="server" UpdateMode="Conditional">
<ContentTemplate>
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
<asp:Button runat="server" Text="Add User Control" Height="44px" ID="Nims"
onclick="Unnamed1_Click" Width="133px" />
<asp:Panel ID="Panel1" runat="server" BackColor="#FFFFCC"></asp:Panel>
</ContentTemplate>
</asp:UpdatePanel>
</div>
</form>
</body>
</html>
но это не работает, и ничего случилось. даже я добавляю точку останова для кода кнопки управления кликом, но кажется, что событие не поднимается.
см. Редактировать 1 – Arian
Ответ отредактирован ... – Goose