ASP.NET GridView数据绑定后LinkButton的Click事件不触发,高手帮我看一下

程序代码如下publicpartialclassControls_uc_UserManage:System.Web.UI.UserControl{protectedvoi... 程序代码如下
public partial class Controls_uc_UserManage : System.Web.UI.UserControl
{
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
this.GetAllAccount();
}
}

/// <summary>
/// 绑定Gridview数据源
/// </summary>
private void GetAllAccount()
{
UserOperate op = new UserOperate();
DataSet ds = op.GetAllAccount();
wdgAccountManage.DataSource = ds;
wdgAccountManage.DataBind();
}

protected void lbtnAddUser_Click(object sender, EventArgs e)
{
Response.Redirect("AddNewUser.aspx");
}

/// <summary>
/// 查询事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void btnFilter_Click(object sender, EventArgs e)
{
UserOperate op = new UserOperate();
string condition = tbFilter.Text.Trim();
DataSet ds = new DataSet();
if (condition.Length > 0)
{
ds = op.GetPartAccount(condition);
wdgAccountManage.DataSource = ds;
wdgAccountManage.DataMember = ds.Tables[0].TableName;
wdgAccountManage.DataBind();
}
else
{
this.GetAllAccount();
}
}

/// <summary>
/// LinkButton事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void wdgAccountManage_ItemCommand(object sender, Infragistics.Web.UI.GridControls.HandleCommandEventArgs e)
{
if (e.CommandName == "cmdDelete")
{
string rScript = "<script>alert('" + e.CommandArgument + "');window.location.href ='AccountManage.aspx'</script>";
this.Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "js", rScript);
}
}
}

if (!IsPostBack) 中绑定数据,但是点击GridView中的LinkButton产生回送事件后,LinkButton的Click事件触发不了,而且回送后GridView没有数据了。请问GridView要如何绑定数据才好啊
展开
 我来答
小宝爸爸笔记
2012-09-27 · TA获得超过2297个赞
知道小有建树答主
回答量:904
采纳率:50%
帮助的人:661万
展开全部
后台程序就是这样,你需要将gridview绑定的函数独立出来 如gridbind();
在执行linkbutton click事件后再调用一次 gridbind();
你先单独看看是否取到了e.commandArgument
commandArgument 也是需要绑定的。在前台中 gridview是模板化的,并绑定commandArgument
你在后台才能取到他的值。
----------------------------------------------------------------------------------------------------------
Gridview 获取行号或者此行某一列的数据 跳转到各自不同的页面
位置:把一个linkbutton先转化成模板
<asp:TemplateField HeaderText="link" ShowHeader="False">
<ItemTemplate>
<asp:LinkButton ID="LinkButton1" runat="server" CausesValidation="false"
CommandName="button" Text="Button" CommandArgument='<%# Container.DataItemIndex %>'
onclick="LinkButton1_Click"></asp:LinkButton>
</ItemTemplate>
</asp:TemplateField>
在Gridview_RowCommand 或者 RowDataBound函数中 写入
int j = Convert.ToInt32(e.CommandArgument);

LinkButton lb = (LinkButton)GridView1.Rows[j].FindControl("LinkButton1");
if (j == 0)
lb.PostBackUrl = "login.aspx";
if (j == 1)
lb.PostBackUrl = "Register.aspx";
根据不同行号 点击linkbutton跳转到不同的页面
zhangchi0420
2012-09-27
知道答主
回答量:39
采纳率:0%
帮助的人:20万
展开全部
用gridview的rowcommand事件 直接用控件的事件是不对的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
勿说心想
2012-09-27 · TA获得超过291个赞
知道大有可为答主
回答量:2104
采纳率:50%
帮助的人:1483万
展开全部
楼主看你的Gridview 是否写了绑定ID,
<asp:TemplateField ShowHeader="False">
<ItemTemplate>
<asp:LinkButton ID="LinkButton1" runat="server" CausesValidation="False" OnClientClick="return confirm('是否要删除')" CommandName="Delete"
Text="删除"></asp:LinkButton>
</ItemTemplate>
</asp:TemplateField>

protected void Gridview_ItemCommand(object source, RepeaterCommandEventArgs e)
{
switch (e.CommandName)
{
case "del":
if (MyStudent.BLL.StudentManage.DeleteById(int.Parse(e.CommandArgument.ToString())))
{
GetData();
}
break;
}
}
追问
' CommandName="cmdDelete">删除我已经写了,如果我把 if (!IsPostBack) { this.GetAllAccount()};
去掉IsPostBack,改为每次Load的时候的执行this.GetAllAccount()绑定数据,那click事件是可以触发的
追答
if (!IsPostBack)
{
this.GetAllAccount();
}

是的 加载的时候必须IsPostBack里面加载数据,
这是每个界面都要的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友e6b5b8b
2012-10-08
知道答主
回答量:24
采纳率:0%
帮助的人:11.8万
展开全部
额?GridView?不习惯,感觉木有Repeater好用。
你贴出来前台代码看看啊
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式