<asp:datalist id="dltserviceinfo" runat="server" EnableViewState="False">
<ItemTemplate>
<TABLE style="FONT-SIZE: 12px; WORD-BREAK: break-all; WORD-WRAP: break-word">
<TR>
<TD width="348"><B>
<asp:LinkButton id="btn" CommandName="lbtn" Text='<%# FL28.Func.myString.strGetUrl(DataBinder.Eval(Container.DataItem, "topic"),DataBinder.Eval(Container.DataItem,"Url"),DataBinder.Eval(Container.DataItem,"XID")) %>' Runat="server">
</asp:LinkButton></B>
<asp:Label ID="lb1" Text='<%# DataBinder.Eval(Container.DataItem,"XID") %>' Visible=False>
</asp:Label>
</TD>
DataList控件中有很多信息,现在想法是再加入一个信息,显示点击量的多少。但是有一些链接需要连接到别的网站上,所以点击量增加的方法只能是在点击LinkButton后就触发。然后把点击量的数值+1再存到数据库中。
现在的问题是,不知道该如何在DataList控件中调用LinkButton按钮的OnClick事件。请各位高手帮帮忙吧!
<ItemTemplate>
<TABLE style="FONT-SIZE: 12px; WORD-BREAK: break-all; WORD-WRAP: break-word">
<TR>
<TD width="348"><B>
<asp:LinkButton id="btn" CommandName="lbtn" Text='<%# FL28.Func.myString.strGetUrl(DataBinder.Eval(Container.DataItem, "topic"),DataBinder.Eval(Container.DataItem,"Url"),DataBinder.Eval(Container.DataItem,"XID")) %>' Runat="server">
</asp:LinkButton></B>
<asp:Label ID="lb1" Text='<%# DataBinder.Eval(Container.DataItem,"XID") %>' Visible=False>
</asp:Label>
</TD>
DataList控件中有很多信息,现在想法是再加入一个信息,显示点击量的多少。但是有一些链接需要连接到别的网站上,所以点击量增加的方法只能是在点击LinkButton后就触发。然后把点击量的数值+1再存到数据库中。
现在的问题是,不知道该如何在DataList控件中调用LinkButton按钮的OnClick事件。请各位高手帮帮忙吧!
在DATALIST 中就可以给LINKBUTTON 添加单击事件了 onclick="GetNums"
{
if (e.CommandName = "lbtn")
{
}
}
{
if(e.Item.ItemType==ListItemType.Item || e.Item.ItemType==ListItemType.AlternatingItem)
{
LinkButton Link1=(LinkButton)e.Item.FindControl("lbnArtModify");
LinkButton Link2=(LinkButton)e.Item.FindControl("lbnArtDelete");
if(e.Item.Cells[2].Text.Trim()==m_strStaffNo)
{
Link1.Visible=true;
Link2.Visible=true;
}
if(this.CheckAuth("Knowledge","0").Substring(10,1)=="1")
{
Link2.Visible=true;
}
} }
<ItemStyle HorizontalAlign="Center" Width="40px"></ItemStyle>
<ItemTemplate>
<asp:LinkButton id="btnDelete" CommandName="delete" Runat="server">删除</asp:LinkButton>
</ItemTemplate>
</asp:TemplateColumn>
上面是HTML代码里DATAGRID加 linkbutton
下面是调用CS代码
private void feiQiGrid_DeleteCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
string strBCNO=e.Item.Cells[0].Text;
this.deleteData(strBCNO);
}
因为CommandText是delete所以执行的是DataGrid的DeleteCommand
{
if(e.CommandName=="lbtn")//等于LinkButton的CommandName时,表示点击LinkButton
{
//相关处理
}
}
private void dltserviceinfo_ItemCommand(object source,System.Web.UI.WebControls.DataListCommandEventArgs e)
{
if(e.CommandName=="btn")
{
LinkButton lbtn = (LinkButton)e.Item.FindControl("btn");
lbtn.Attributes.Add("onclick",这里需要传递给OnClick事件一个参数);");
}
我想问一下我的OnClick事件应该写在什么地方?前台还是后台?
}
----------------
private void dltserviceinfo_ItemCommand(object source,System.Web.UI.WebControls.DataListCommandEventArgs e)
{
if(e.CommandName=="btn")
{
click事件直接写在这里
}
}
private void dltserviceinfo_ItemCommand(object
source,System.Web.UI.WebControls.DataListCommandEventArgs e)
{
if(e.CommandName=="btn")
{
LinkButton lbtn = (LinkButton)e.Item.FindControl("btn");
lbtn.OnClick += new System.EventHandler(onlick);
}void onlick()
{}
“System.Web.UI.WebControls.LinkButton.OnClick(System.EventArgs)”,因为它受保护级别限制
private void dltserviceinfo_ItemCommand(object source, System.Web.UI.WebControls.DataListCommandEventArgs e)
{
if(e.CommandName=="btn")
{
LinkButton lbtn = (LinkButton)e.Item.FindControl("btn");
lbtn.OnClick += new System.EventHandler(OnClick);
}
}
public void OnClick()
{
Label1.Visible=true;
}
用了您的方法还是不能调用阿。我用一个Label实验,点击lbtn以后显示Label,但是还不能实现
private void dltserviceinfo_ItemCommand(object source,System.Web.UI.WebControls.DataListCommandEventArgs e)
{
if(e.CommandName=="btn")
{
LinkButton lbtn = (LinkButton)e.Item.FindControl("btn");
lbtn.Attributes.Add("onclick",这里需要传递给OnClick事件一个参数);");
}"
if(e.CommandName=="btn")应改为if(e.CommandName=="lbtn")
这地方怎么能用if(e.CommandName=="lbtn")?
以为你用这个
fondcontrol找到控件,再添加你要的事件
“System.Web.UI.WebControls.LinkButton.OnClick(System.EventArgs)”,因为它受保护级别限制
private void dltserviceinfo_ItemCommand(object source, System.Web.UI.WebControls.DataListCommandEventArgs e)
{
if(e.CommandName=="btn")
{
LinkButton lbtn = (LinkButton)e.Item.FindControl("btn");
lbtn.OnClick += new System.EventHandler(OnClick);
}
}
public void OnClick()
{
Label1.Visible=true;
}把OnClick改成onclick,大写会被认为是系统定义的那个
<Fields>
<asp:TemplateField>
<ItemTemplate>
<asp:LinkButton ID="lbEdit" runat="server" CausesValidation="False" CommandName="Edit"
Text="修改"></asp:LinkButton>
</ItemTemplate>
</asp:TemplateField>
</Fields>
</asp:DetailsView>
这样linkButton 会触发protected void DetailsView1_ItemCommand(object sender, DetailsViewCommandEventArgs e)
{
switch(e.CommandName)
{
case"Edit":
onClick事件........
break; }
}
switch(e.CommandName)
{
case"Edit":
onClick事件........
break; }
这种方法才能起作用。
我用OnClick说我受限制,用onclick说不包含定义
<asp:DataList ID="DataList1" runat="server" OnItemCommand="DataList1_ItemCommand">
<ItemTemplate>
<asp:LinkButton ID="LinkButton1" CommandName="lbn" runat="server">LinkButton</asp:LinkButton></ItemTemplate>
</asp:DataList>后台:
protected void DataList1_ItemCommand(object source, DataListCommandEventArgs e)
{
if (e.CommandName == "lbn")
{
//code
}
}注意:前台的CommandName 最好回避一些关键字,如 delete update,否则会出错(有时候)
private void dltserviceinfo_ItemCommand(object source, System.Web.UI.WebControls.DataListCommandEventArgs e)
{
if(e.CommandName=="btn")
{
LinkButton lbtn = (LinkButton)e.Item.FindControl("btn");
lbtn.OnClick += new System.EventHandler(OnClick);
}
}
public void OnClick()
{
Label1.Visible=true;
}把OnClick改成onclick,大写会被认为是系统定义的那个
这样写 在public void OnClick()括号里是不是应该有参数
因为上面的定义要有参数传入 摆脱大虾们 写个完整版的谢了~
前台代码:
<asp:DataList ID="DLNewCompany" runat="server" RepeatColumns="1"
Width="100%">
<ItemTemplate>
<asp:LinkButton ID="editBtn3" runat="server" CommandArgument='<%# Eval("ID", "{0}")%>'
Text='<%#substring9(Eval("ComName")) %>' OnCommand="editBtn3_Command"></asp:LinkButton>
<asp:Label ID="Label19" runat="server" Text='<%#substring7(Eval("ReleaseTime"))%>'></asp:Label>
</ItemTemplate>
</asp:DataList>
后台代码: protected void editBtn3_Command(object sender, CommandEventArgs e)
{
int CompanyID = Convert .ToInt32(e.CommandArgument.ToString());
Response.Redirect("DetailHomemakingCompany.aspx?CompanyID=" + CompanyID);
}