这几天照着例子做程序 , 有两个小问题,一直解决不了 1.
我在 DataGrid_List_ItemDataBound 写了以下程序 ,但是他只对我列表页中的第一行起作用, 其他行就不行.
switch( e.Item.ItemType )
{
case ListItemType.Item: // 列表控件中的项
{
e.Item.Attributes.Add("onmouseover","this.className='TableRowMouseOver'");
e.Item.Attributes.Add("onmouseout","this.className='TableRow'");
break;
}
}
(其实刚开始的时候是可以用的,不来也不知道为什么就不行了.)2.<asp:LinkButton id="DeleteButton" runat="server" CssClass="ActionLink" CommandName="Delete">删除</asp:LinkButton>
但在DataGrid_List_ItemCommand里好象没有响应
我在 DataGrid_List_ItemDataBound 写了以下程序 ,但是他只对我列表页中的第一行起作用, 其他行就不行.
switch( e.Item.ItemType )
{
case ListItemType.Item: // 列表控件中的项
{
e.Item.Attributes.Add("onmouseover","this.className='TableRowMouseOver'");
e.Item.Attributes.Add("onmouseout","this.className='TableRow'");
break;
}
}
(其实刚开始的时候是可以用的,不来也不知道为什么就不行了.)2.<asp:LinkButton id="DeleteButton" runat="server" CssClass="ActionLink" CommandName="Delete">删除</asp:LinkButton>
但在DataGrid_List_ItemCommand里好象没有响应
解决方案 »
- CheckBoxList 布局显示问题
- 求助 .NET winform输入输出问题,在线等~
- 我这里为什么不能更新呢?
- IE Developer ToolBar 装在IE7下,不显示DOM树呢。重装了IE7 也重装了IE Developer ToolBar个。都还是没有个
- 转义符 求救。。。。。。。。。。。
- 再次问,改了很多次代码,仍然无法显示xml文件
- 如何才能让ASP.net运行起来?
- 向所有高手提问,特别是写过ASP.Net杀毒的高手
- 一个简单的问题,来者有分!!
- 我很气愤,没有人认真回答我的问题,而是敷衍我,如果CSDN有高手,请进!我已没多少分了,请理解!
- 关于下拉框的问题~~请高手帮忙!
- 怎么把9215875.5转化成大写的人民币符号啊.
//==================================================================
// SysAdminUser_DataGrid.ascx
//==================================================================
<%@ Control Language="c#" AutoEventWireup="false" Codebehind="SysAdminUser_DataGrid.ascx.cs" Inherits="ReallyNet.Web.SystemAdmin.Modules.SysAdminUser.SysAdminUser_DataGrid" EnableViewState="false" TargetSchema="http://schemas.microsoft.com/intellisense/ie5" debug="True"%>
<HTML>
<HEAD>
<title>SysAdminUser</title>
<meta content="Microsoft Visual Studio .NET 7.1" name="GENERATOR">
<meta content="C#" name="CODE_LANGUAGE">
<meta content="JavaScript" name="vs_defaultClientScript">
<meta content="http://schemas.microsoft.com/intellisense/ie5" name="vs_targetSchema">
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<LINK href="../../CSS/List.css" type="text/css" rel="stylesheet">
</HEAD>
<body scroll="no" MS_POSITIONING="FlowLayout">
<form id="Form1" method="post" runat="server">
<table cellSpacing="0" cellPadding="0" width="98%" align="center" border="0">
<tr>
<td colSpan="2" height="34"><table cellSpacing="0" cellPadding="0" width="100%" align="center" border="0">
<tr>
<td colSpan="3" height="7"></td>
</tr>
<tr>
<td width="40"><IMG height="27" src="../../Images/Opration/title_work.gif" width="40"></td>
<td background="../../Images/Opration/title_bg.gif"><table cellSpacing="0" cellPadding="0" width="100%" border="0">
<tr>
<td class="ModuleTitle" id="ModuleTitle" runat="server"></td>
<td class="ModuleToolbar" id="ModuleToolbar" align="right" runat="server"></td>
</tr>
</table>
</td>
<td width="10"><IMG height="27" src="../../Images/Opration/title_back.gif" width="10"></td>
</tr>
</table>
</td>
</tr>
<tr>
<td class="ListTable" vAlign="top" colSpan="2"><asp:datagrid id="DataGrid_List" runat="server" AutoGenerateColumns="False" width="100%" cellPadding="2"
cellSpacing="1" height="100%" CssClass="ListContentTable" BorderWidth="0px" ShowFooter="True" GridLines="None" PageSize="16" DataKeyField="UserID" DataSource="<%# ItemList %>">
<ItemStyle CssClass="TableRow"></ItemStyle>
<HeaderStyle HorizontalAlign="Center" CssClass="TableHeader"></HeaderStyle>
<FooterStyle CssClass="TableFooter"></FooterStyle>
<Columns>
<asp:TemplateColumn HeaderText="用户帐号">
<ItemStyle CssClass="ListTD2"></ItemStyle>
<ItemTemplate>
<asp:HyperLink id="DisplayLink" runat="server" CssClass="DisplayLink">
<%# DataBinder.Eval (Container.DataItem,"UserID")%>
</asp:HyperLink>
</ItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn HeaderText="操作">
<HeaderStyle Width="80px"></HeaderStyle>
<ItemStyle HorizontalAlign="Center"></ItemStyle>
<ItemTemplate>
<asp:LinkButton id="DeleteButton" runat="server" CssClass="ActionLink" CommandName="Delete">删除</asp:LinkButton>
|
<asp:HyperLink id=ModifyLink runat="server" CssClass="ActionLink" NavigateUrl='<%# DataBinder.Eval (Container.DataItem,"UserID","../../Program/AdminIndex/SysAdminUser.aspx?UserAction=ModifyAction&UserID={0}")%>'>编辑</asp:HyperLink>
</ItemTemplate>
</asp:TemplateColumn>
</Columns>
<PagerStyle Visible="False"></PagerStyle>
</asp:datagrid>
</td>
</tr>
</table>
<asp:Label id="lbShowPage" runat="server"></asp:Label>
</form>
</body>
</HTML>
// SysAdminUser_DataGrid.ascx.cs
//==================================================================
namespace ReallyNet.Web.SystemAdmin.Modules.SysAdminUser
{
using System;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls; using ReallyNet.Common.Data;
using ReallyNet.BusinessFacade;
using ReallyNet.SystemFramework;
using ReallyNet.Common; using System.Text;
using System.Collections;
using System.Web.UI; /// <summary>
/// SysAdminUser_DataGrid 的摘要说明。
/// </summary>
public class SysAdminUser_DataGrid : ModuleBase
{ protected System.Web.UI.WebControls.DataGrid DataGrid_List;
protected System.Web.UI.HtmlControls.HtmlTableCell ModuleTitle;
protected System.Web.UI.HtmlControls.HtmlTableCell ModuleToolbar; private const String KEY_PAGE = "iPage"; // 当前页传递参数
private string strPage = "" ; // 读取当前页临时变量
private int iPage = 1; // 当前页
private int iPageSize = 20; // 每页记录数
private int iRecordCount = 0;
protected System.Web.UI.WebControls.Label lbShowPage; // 总记录数 public DataView ItemList
{
get
{
return moduleItemView;
}
}
private DataView moduleItemView;
private void Page_Load(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面
if(!IsPostBack)
{
// 绑定数据
DataGrid_List_DataBind();
} } #region Web 窗体设计器生成的代码
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
//
InitializeComponent();
base.OnInit(e);
}
/// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器
/// 修改此方法的内容。
/// </summary>
private void InitializeComponent()
{
this.DataGrid_List.ItemCommand += new System.Web.UI.WebControls.DataGridCommandEventHandler(this.DataGrid_List_ItemCommand);
this.DataGrid_List.ItemDataBound += new System.Web.UI.WebControls.DataGridItemEventHandler(this.DataGrid_List_ItemDataBound);
this.Load += new System.EventHandler(this.Page_Load); }
#endregion
private void DataGrid_List_DataBind()
{
// 提取用户提交页码
if (Request.Form["iPage"]!=null)
{
strPage=(Request.Form["iPage"].ToString()).Trim(); if (strPage != String.Empty)
{
iPage = Int32.Parse(strPage);
}
}
else
{
iPage = 1;
} // 从 系统管理员 系统的公共方法中读取数据
SysAdminUserData objUserDataSet = (new SysAdminUserSystem()).GetSysAdminUserList(iPage , iPageSize);
iRecordCount = objUserDataSet.iRecordCount;
moduleItemView = objUserDataSet.Tables[SysAdminUserData.SysAdminUser_TABLE].DefaultView; if (moduleItemView.Count > 0)
{
// 如果有记录把读取的数据绑定到网页的控件中
DataGrid_List.DataSource = moduleItemView;
DataBind();
}
}
// 不指定查询及排序的查询所有用户列表 [分页]
private SysAdminUserData LoadSysAdmin_List_All_Page(int p_iPage , int p_iPageSize)
{
return (new SysAdminUserSystem()).GetSysAdminUserList(p_iPage , p_iPageSize);
} private void DataGrid_List_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
{
switch( e.Item.ItemType )
{
case ListItemType.Header: // 列表控件中的页眉
{
break;
}
case ListItemType.Item: // 列表控件中的项
{
e.Item.Attributes.Add("onmouseover","this.className='TableRowMouseOver'");
e.Item.Attributes.Add("onmouseout","this.className='TableRow'"); // 退出检查
break; }
case ListItemType.Footer: // 列表控件中的页脚
{
break;
}
case ListItemType.AlternatingItem:
{
break;
}
case ListItemType.EditItem:
{
break;
}
}
} private void DataGrid_List_ItemCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
if(e.CommandName == "Delete")
{
//this.DeleteRow(this.grdTest.DataKeys[e.Item.ItemIndex].ToString());
lbShowPage.Text = "DeleteButton OK";
}
}
}
}
代码太多了,没仔细看
case ListItemType.AlternatingItem应该和case ListItemType.Item一块处理,他们都是“列表控件中的项”
{
case ListItemType.Item: // 列表控件中的项
case ListItemType.AlternatingItem:
{
e.Item.Attributes.Add("onmouseover","this.className='TableRowMouseOver'");
e.Item.Attributes.Add("onmouseout","this.className='TableRow'");
break;
}
}
case ListItemType.AlternatingItem: // 列表控件中的项
{
e.Item.Attributes.Add("onmouseover","this.className='TableRowMouseOver'");
e.Item.Attributes.Add("onmouseout","this.className='TableRow'");
break;
}
应该就可以了!
{
// 在此处放置用户代码以初始化页面
if(!IsPostBack)
{
// 绑定数据
DataGrid_List_DataBind();
} }
如果没有特殊要求,就不要用if(!IsPostBack){}了,直接DataGrid_List_DataBind绑定吧,要求每次刷新都要绑定才能触发DataGrid_List_ItemCommand()事件
上面的代码没有贴出窗体设计生成器里面的内容,里面应有一句(就是要有事件委托)
this.myGrid.DeleteCommand += new System.Web.UI.WebControls.DataGridCommandEventHandler(this.myGrid_DeleteCommand);
没有这一句,它是不起作用的.
我一直以为, 如果我不启动隔行功能, 就不会需要去判断 ListItemType.AlternatingItem 删除事件委托 如下
大家帮忙看一下
private void InitializeComponent()
{
this.Load += new System.EventHandler(this.Page_Load);
this.DataGrid_List.ItemCommand += new System.Web.UI.WebControls.DataGridCommandEventHandler(this.DataGrid_List_ItemCommand);
this.DataGrid_List.DeleteCommand += new System.Web.UI.WebControls.DataGridCommandEventHandler(this.DataGrid_List_DeleteCommand);
this.DataGrid_List.ItemDataBound += new System.Web.UI.WebControls.DataGridItemEventHandler(this.DataGrid_List_ItemDataBound);
}
{
if(e.CommandName == "Delete")
{
lbPageShow.Text ="Delete OK"
}
}
重新生成一个ItemCommand事件试试 以前也碰到过这情况