1.the trick is to create your own 页眉 table above the grid with the correct width, and set ShowHeader=false on your datagrid2. use
<table width=400>
<tr>
<td width=100>表头</td><td width=100>表头</td><td width=100>表头</td><td width=100>.表头</td>
</tr>
</table>
<div style="overflow:auto; height:400">
<asp:DataGrid .../>
</div>
<table width=400>
<tr>
<td width=100>表头</td><td width=100>表头</td><td width=100>表头</td><td width=100>.表头</td>
</tr>
</table>
<div style="overflow:auto; height:400">
<asp:DataGrid .../>
</div>
解决方案 »
- 纠结,伪静态和静态生成不知道选择哪个?
- 求助水晶报表问题,, !!!!!!!!!
- 我想给页面添加一个键盘监听事件要怎么做? 在线等!!!!
- 很棘手的一个问题!!!郁闷!!!寻求帮助!!!
- 小菜请高手帮忙……
- 各位朋友,Javascript中如何给Dropdownlist赋值?谢谢!!!
- asp.net中datagrid的问题,急
- 求:《ASP.Net Web站点高级编程》电子书下载地址!
- 怎么在页面上创建数据库,并能选择数据库进行数据管理
- .net中打印excel問題?
- 《思归》快来!一个有关OLEDB连接ACCESS的问题,解决不了我就升天了!
- sever.transfer AND response.redirect
去那工作是不是有什么好处? :D
给我推荐一下吧.
"一定"要是拖动该框架集右边的滚动条时,数据网格控件整体往上移动,使我能看到datagrid内容的的表头,也就是页眉,而且照样能有排序的功能.
"一定"要是拖动该框架集右边的滚动条时,数据网格控件整体往上移动,使我能看到datagrid内容的的表头,也就是页眉,而且照样能有排序的功能.
<%@ Page Language="C#" %>
<%@ import Namespace="System.Data" %>
<%@ import Namespace="System.Data.SqlClient" %>
<script runat="server"> void Page_Load(object o, EventArgs e)
{
if (!IsPostBack)
{
SqlDataAdapter da = new SqlDataAdapter("select * from authors",
"server=localhost;database=pubs;uid=sa;pwd=;"); DataTable dt = new DataTable();
da.Fill(dt); DataGrid1.DataSource = dt.DefaultView;
DataGrid1.DataBind();
}
}</script>
<html>
<head>
</head>
<body>
<form id="form1" runat="server">
<table width=600 cellspacing="0">
<tr><td width=200 align="center">Employee ID</td><td width=200 align="center">Last Name</td><td width=200 align="center">First Name</td></tr>
</table>
<div style="overflow-y:auto;height:200">
<asp:DataGrid id="DataGrid1" runat="server" AutoGenerateColumns="false" ShowHeader=false ItemStyle-Width="600">
<Columns>
<asp:BoundColumn HeaderText="Employee ID" DataField="au_id" ItemStyle-Width="200" />
<asp:BoundColumn HeaderText="Last Name" DataField="au_lname" ItemStyle-Width="200" />
<asp:BoundColumn HeaderText="First Name" DataField="au_fname" ItemStyle-Width="200" />
</Columns>
</asp:DataGrid>
</div>
</form></body>
</html>
所以我就设了一页显示30要记录,拖动滚动条就好一些啊. 所以我才说:>>>"一定"要是拖动该框架集右边的滚动条.
DataGrid1.Sort = "某字段名";
再DataBind();
<td><a href="javascript:__doPostBack('DataGrid1:_ctl1:_ctl0','')">ID</a></td><td><a href="javascript:__doPostBack('DataGrid1:_ctl1:_ctl1','')">UnitName</a></td><td><a href="javascript:__doPostBack('DataGrid1:_ctl1:_ctl2','')">UnitID</a></td><td><a href="javascript:__doPostBack('DataGrid1:_ctl1:_ctl3','')">WOrder</a></td>
</tr>
这个问题真是有点麻烦.
我这出来个大致思路.功能嘛应该是基本实现.细节要处理的很多.:(
如下:
要求:页面布局是GridLayout.
因为要计算这个DataGrid的坐标.
使用FlowLayout流布局太难确定这个位置.(有好的提议也让告诉我.谢谢)
很容易动态改变
至少是这个DataGrid定义成绝对坐标style position的absolute
指定top 与 left加一个div 这里名字就叫fakeHeader<div id="fakeHeader" style="DISPLAY:none;Z-INDEX:10000"></div>
<asp:DataGrid id="DataGrid1".......></asp:DataGrid>放到DataGrid上面就行了 设置 Z-INDEX 是为了让它能在DataGrid的上面在<body...里加上事件:
onscroll="showFakeHeader('DataGrid1',document.all.fakeHeader);"
onscroll是拖动滚动条时发生的下面就是showFakeHeader的js函数
参数 :
dataGridName 是 这个DataGrid的ID 在客户端的时候会用这个名字去找Table
objFakeHeader 就是要显示的那个divfunction showFakeHeader(dataGridName, objFakeHeader)
{
var objDataGrid = document.all.item(dataGridName);
var objHeader = objDataGrid.rows(0);//这个rows(0)应该是DataGrid的Header
//看了生成的HTML代码就这样想的
var scrollTop = document.body.scrollTop + 1 - 1;
var objTop = objDataGrid.style.pixelTop + 1 - 1;
//比较一下滚动条是不是已拖到看不见DataGrid的Header.
//(所以才要DataGrid的坐标定位)
//是则显示自己的Header, 不是就把自己的Header隐藏
if (objTop < scrollTop)
{
objFakeHeader.innerHTML = "<table border='0' cellspacing='0' cellpadding='4' rules='all' bordercolor='#CC9966' border='1' style='background-color:White;border-color:#CC9966;border-width:1px;width:326px;border-collapse:collapse;'>" + objHeader.outerHTML + "</table>";
//div里面的内容.这个的好处是直接从客户端把Header的内容取出来
//就是前面找到的那个rows(0) , 一个tr
//这样就不用管Header上有没有排序之类的东西.直接复制全部HTML过来
//前后我都手工加了<table></table>标签
//属性也是手工写上去的.... :(
//也可以想办法去把原来table的属性都取出来....不过实在是...太麻烦
//要用js分析复杂的字串......有空再做吧
objFakeHeader.style.position = "absolute";
objFakeHeader.style.left = objDataGrid.style.left;
objFakeHeader.style.top = document.body.scrollTop ;
objFakeHeader.style.display = "block";
//设置假header的位置并显示
}
else
{
objFakeHeader.style.display = "none";
// 隐藏
}
}以上就是这样....想不到更好的办法了
这个运行的时候.如果滚动条没有拉到Header.假的div是不会显示的
主要还是样式问题,列头的内容完全没问题
如果楼主的DataGrid样式是固定的话.我想可以写死它.
就是"<table......." + objHeader.innerHTML + "</table>"这段
基本功能就实现了.没有处理的太细.楼主自己看着办吧
这个客户要求还真变态... @_@
如果是楼主自己想做成这样.... 拜托下次不要想出这些稀奇古怪的东西来
故事和flash以前都看过
没想到今天遇上作者了.
给签个名吧?
以保证新table的显示样式与原table完全一样
但是在div上设置 style="overflow:hidden;height:****px"
关键就在于这个高度只留出header的高度,让它可显示.其他的看不见.
:(
要细细追究起来问题很多.做到完美不是那么容易
放在此地也无所谓,可以看大家看看,看看还有没有高手光顾小弟的生意,这次可谓真是
高手如yun啊?如果大家不介意我这“一颗星”的话,渴望做个朋友。
姓名:李政 82年出生 现就职于一家日资企业 纯用asp.net(vb)+sqlserver2000+flash mx实现b/s结构。QQ:53486992 E_mail:[email protected] and [email protected]
各位高手,顺便问一下有谁能解决在网站打开时,在客户端状态栏下显示时间的左边显示我们公司或是我的头像如何做,似有的网站做到了。http://wyyl.xiloo.com/soye.htm
各位高手,顺便问一下有谁能解决在网站打开时,在客户端状态栏下显示时间的左边显示我们公司或是我的头像如何做,似有的网站做到了。http://wyyl.xiloo.com/soye.htm
<!-- Begin
function scrollit_r2l(seed)
{ var m1 = "网页制作幽灵——http://wyyl.xiloo.com";
var m2 = " " ;
var msg=m1+m2;
var out = " ";
var c = 1;
var speed = 100
if (seed > 100)
{ seed-=2;
var cmd="scrollit_r2l(" + seed + ")";
timerTwo=window.setTimeout(cmd,speed);}
else if (seed <= 100 && seed > 0)
{ for (c=0 ; c < seed ; c++)
{ out+=" ";}
out+=msg; seed-=2;
var cmd="scrollit_r2l(" + seed + ")";
window.status=out;
timerTwo=window.setTimeout(cmd,speed); }
else if (seed <= 0)
{ if (-seed < msg.length)
{
out+=msg.substring(-seed,msg.length);
seed-=2;
var cmd="scrollit_r2l(" + seed + ")";
window.status=out;
timerTwo=window.setTimeout(cmd,speed);}
else { window.status=" ";
timerTwo=window.setTimeout("scrollit_r2l(100)",speed);
}
}
}
scrollit_r2l(100);
// End -->
</script>
<OBJECT id="assistant" classid=CLSID:D45FD31B-5C6E-11D1-9EC1-00C04FD7081F width="32" height="32">
</OBJECT>
<script>
var MerlinID;
var MerlinACS;
document.all.assistant.Connected = true;
MerlinLoaded = LoadLocalAgent(MerlinID, MerlinACS);
Merlin = assistant.Characters.Character(MerlinID);
Merlin.Show();
Merlin.Play("Surprised");
Merlin.Play("Pleased");
Merlin.Speak("*_^欢迎您来\" 网页制作幽灵网\"");
Merlin.Play("GestureLeft");
Merlin.Speak("这是我冰河的网址:http://wyyl.xiloo.com");
Merlin.Play("GestureRight");
Merlin.Speak("这是域名境像1:http://wyyl.cnnb.net");
Merlin.Play("Surprised");
Merlin.Play("GestureLeft");
Merlin.Speak("这是域名镜像2:http://wyyling.126.com");
Merlin.Play("GestureUp");
Merlin.Play("GestureDown");
Merlin.Play("Surprised");
Merlin.Think("我爱你们!请我来逛逛,谢谢!*_^*_^*_^");
function LoadLocalAgent(AssistantID, AssistantACS)
{
LoadReq = document.all.assistant.Characters.Load(AssistantID, AssistantACS);
return(true);
}
</script>
他用的那个是大家都有的
你想把你自己做进去吗? *_*
<object classid=XXXXXXXXXXXXXXXXXXXXXXXXXXXX></object>
你可以让它Hide()
不Show()出来
<HEAD>
<TITLE>邮件</TITLE>
<OBJECT id="AgentControl" codeBase="#VERSION=2,0,0,0" height="0" width="0" classid="CLSID:D45FD31B-5C6E-11D1-9EC1-00C04FD7081F" VIEWASTEXT>
</OBJECT>
<SCRIPT language="JavaScript">
<!--//
// * Character Objects
var Merlin;// * Variables
var UsedChars;
var MerlinID;
var MerlinACS;
var MerlinURL;
var MerlinStates;
var MerlinAnimations;
var MerlinReq;
var MerlinStatesReq;
var MerlinAnimationsReq;
var MerlinLoaded;
var LoadReq;
var HideReq;
var MerlinLeftX, MerlinCenterX, MerlinRightX;
var MerlinTopY, MerlinCenterY, MerlinBottomY;// * Initialize
UsedChars = "Merlin";// * Merlin
MerlinID = "Merlin";
MerlinACS = "merlin.acs";
//MerlinURL = "http://agent.microsoft.com/agent2/chars/merlin/merlin.acf";
MerlinURL="#"
MerlinStates = "Showing, Hiding, Speaking, Moving, Gesturing, Idling, Hearing, Listening";
MerlinAnimations = "GestureLeft, Surprised";
MerlinLoaded = false;
Window_OnLoad();function Window_OnLoad() {
// Purpose: Runs automatically when page is loaded
//目的:在页面打开时自动运行程序
// * INSERT ANY NON-AGENT RELATED SCRIPTING HERE AgentControl.Connected = true; MerlinLoaded = LoadLocalAgent(MerlinID, MerlinACS); if (MerlinLoaded) {
SetCharObj();
}
CheckLoadStatus();
}function LoadLocalAgent(CharID, CharACS) {
// Purpose: Attempts to load the specified character
// Returns: true if successful, false if not AgentControl.RaiseRequestErrors = false;
LoadReq = AgentControl.Characters.Load(CharID, CharACS);
AgentControl.RaiseRequestErrors = true; if (LoadReq.Status != 1) {
return(true);
}
return(false);
}function SetCharObj() {
// Purpose: Sets the character reference and TTS Language ID Merlin = AgentControl.Characters.Character(MerlinID);
Merlin.LanguageID = 0x409 ;
}
<HEAD>
<TITLE>邮件</TITLE>
<OBJECT id="AgentControl" codeBase="#VERSION=2,0,0,0" height="0" width="0" classid="CLSID:D45FD31B-5C6E-11D1-9EC1-00C04FD7081F" VIEWASTEXT>
</OBJECT>
<SCRIPT language="JavaScript">
<!--//
// * Character Objects
var Merlin;// * Variables
var UsedChars;
var MerlinID;
var MerlinACS;
var MerlinURL;
var MerlinStates;
var MerlinAnimations;
var MerlinReq;
var MerlinStatesReq;
var MerlinAnimationsReq;
var MerlinLoaded;
var LoadReq;
var HideReq;
var MerlinLeftX, MerlinCenterX, MerlinRightX;
var MerlinTopY, MerlinCenterY, MerlinBottomY;// * Initialize
UsedChars = "Merlin";// * Merlin
MerlinID = "Merlin";
MerlinACS = "merlin.acs";
//MerlinURL = "http://agent.microsoft.com/agent2/chars/merlin/merlin.acf";
MerlinURL="#"
MerlinStates = "Showing, Hiding, Speaking, Moving, Gesturing, Idling, Hearing, Listening";
MerlinAnimations = "GestureLeft, Surprised";
MerlinLoaded = false;
Window_OnLoad();function Window_OnLoad() {
// Purpose: Runs automatically when page is loaded
//目的:在页面打开时自动运行程序
// * INSERT ANY NON-AGENT RELATED SCRIPTING HERE AgentControl.Connected = true; MerlinLoaded = LoadLocalAgent(MerlinID, MerlinACS); if (MerlinLoaded) {
SetCharObj();
}
CheckLoadStatus();
}function LoadLocalAgent(CharID, CharACS) {
// Purpose: Attempts to load the specified character
// Returns: true if successful, false if not AgentControl.RaiseRequestErrors = false;
LoadReq = AgentControl.Characters.Load(CharID, CharACS);
AgentControl.RaiseRequestErrors = true; if (LoadReq.Status != 1) {
return(true);
}
return(false);
}function SetCharObj() {
// Purpose: Sets the character reference and TTS Language ID Merlin = AgentControl.Characters.Character(MerlinID);
Merlin.LanguageID = 0x409 ;
}
// Purpose: Determines if required characters have been loaded.
// If not, issue request to load next character
// else run the AgentIntro routine if (!MerlinLoaded) {
window.status = "Loading " + MerlinID + " Character. Please Wait...";
MerlinReq = AgentControl.Characters.Load(MerlinID, MerlinURL);
return(false);
} window.status = "";
AgentIntro();
return(true);
}function LoadError() {
var strMsg;
window.status = "";
strMsg = "Error Loading Character: " + MerlinID + "\n";
strMsg = strMsg + "This Microsoft Agent Script requires the character(s):\n";
strMsg = strMsg + UsedChars;
alert(strMsg);
}
function GetScreenPositions() {
var ScreenWidth = window.screen.width;
var ScreenHeight = window.screen.height; if ((ScreenWidth == 0) || (ScreenHeight == 0)) {
ScreenWidth = 800;
ScreenHeight = 600;
} MerlinCenterX = (parseInt(ScreenWidth / 2) - parseInt(Merlin.Width / 2));
MerlinRightX = (ScreenWidth - Merlin.Width);
MerlinCenterY = (parseInt(ScreenHeight / 2) - parseInt(Merlin.Height / 2));
MerlinBottomY = (ScreenHeight - Merlin.Height);
}function InitAgentCommands() {
// Purpose: Initialize the Commands menu Merlin.Commands.RemoveAll();
Merlin.Commands.Caption = "My Menu Name";
Merlin.Commands.Add("ACO", "Advanced Character Options", "Advanced Character Options");
}function AgentIntro() {
GetScreenPositions();
InitAgentCommands();
Merlin.MoveTo(MerlinLeftX, MerlinTopY);
Merlin.Show();
Merlin.Speak("Hello greystar ");
Merlin.Think("What do you want to know?");
Merlin.Play("GestureLeft");
Merlin.Speak("Help yourself to read!");
Merlin.Play("Surprised");
Merlin.MoveTo(MerlinRightX,MerlinBottomY);
Merlin.Hide();
}
//-->
</SCRIPT>
<SCRIPT language="JavaScript" event="RequestComplete(RequestObject)" for="AgentControl">
<!--//
// Purpose: Take action on completion or failure of requests{
switch (RequestObject) {
case MerlinReq :
if (RequestObject.Status == 0) {
SetCharObj(); if (MerlinStates != "") {
window.status = "Loading " + MerlinID + " States. Please Wait...";
MerlinStatesReq = AgentControl.Characters(MerlinID).Get("State", MerlinStates, true);
}
else if (MerlinAnimations != "") {
window.status = "Loading " + MerlinID + " Animations. Please Wait...";
MerlinAnimationsReq = AgentControl.Characters(MerlinID).Get("Animation", MerlinAnimations, true);
}
else {
MerlinLoaded = true;
CheckLoadStatus();
}
}
else {
LoadError();
}
break;
case MerlinStatesReq :
if (RequestObject.Status == 0) {
if (MerlinAnimations != "") {
window.status = "Loading " + MerlinID + " Animations. Please Wait...";
MerlinAnimationsReq = AgentControl.Characters(MerlinID).Get("Animation", MerlinAnimations, true);
}
else {
MerlinLoaded = true;
CheckLoadStatus();
}
}
else
{
LoadError();
}
break;
case MerlinAnimationsReq :
if (RequestObject.Status == 0)
{
MerlinLoaded = true;
CheckLoadStatus();
}
else
{
LoadError();
}
break;
case HideReq :
AgentControl.Characters.Unload(MerlinID);
break;
} // end switch
}
//-->
<SCRIPT language="JavaScript" event="Command(UserInput)" for="AgentControl">
<!--//
// Purpose: Determine Command that was selected either by menu or voice
// and run the applicable Command Script
var BadConfidence;
BadConfidence = 10; if (UserInput.Confidence <= -40)
{
// Bad Recognition
}
else if ((UserInput.Alt1Name != "") && (Math.abs(Math.abs(UserInput.Alt1Confidence) - Math.abs(UserInput.Confidence)) < BadConfidence))
{
// Bad Confidence - too close to another command
}
else if ((UserInput.Alt2Name != "") && (Math.abs(Math.abs(UserInput.Alt1Confidence) - Math.abs(UserInput.Confidence)) < BadConfidence))
{
// Bad Confidence - too close to another command
}
else
{
// High Confidence
switch(UserInput.Name) {
case "ACO" :
AgentControl.PropertySheet.Visible = true;
break;
} }
//-->
</SCRIPT>
<SCRIPT language="JavaScript" event="Book(BookID)" for="AgentControl">
<!--//
//-->
</SCRIPT>
<SCRIPT language="JavaScript" event="Click(CharacterID, Button, Shift, X, Y)" for="AgentControl">
<!--
// Insert Click Event Code Here
-->
</SCRIPT>
<SCRIPT language="JavaScript" event="DblClick(CharacterID, Button, Shift, X, Y)" for="AgentControl">
<!--
// Purpose: Stop and Hide all characters on double-click Merlin.StopAll();
if (!Merlin.HasOtherClients)
{
if (Merlin.Visible) {
AgentIntro()
//HideReq = Merlin.Hide();
}
else { AgentControl.Characters.Character.Unload(MerlinID);
}
}
//-->
</SCRIPT>
<META http-equiv="Content-Type" content="text/html; charset=gb2312">
<META content="MSHTML 6.00.2600.0" name="GENERATOR">
</HEAD>
<BODY style="BACKGROUND-COLOR: #ffffff" bgColor="#ffffff" leftMargin="0" background="cid:174255603@11122002-37DE" topMargin="0">
</BODY>
</HTML>
代理控件支持语音的。