当前位置:编程学习 > C#/ASP.NET >>

急,DataGrid问题

现在在DataGrid中有这样一个问题,在每一行记录的末尾有编辑和删除按钮,当我想修改某一条记录时,修改完我想让它页面停留在此记录附近,但我现在修改完它总在第一条记录位置,这样我还得找刚刚修改了哪条记录,因为记录很多吗,我用的时vs2003和c#语言. --------------------编程问答-------------------- 排序? --------------------编程问答-------------------- selectedrowindex=dg.rows[e.rowindex].rowindex; --------------------编程问答-------------------- 能说的详细吗,想楼上这个代码应该写在哪呀,我是个新手. --------------------编程问答-------------------- selectedrowindex需要什么命名空间吗,谢谢 --------------------编程问答-------------------- 高手能进来帮忙吗,十分感谢了. --------------------编程问答-------------------- 保存前记录当前PageIndex
保存完后先
this.GridView1.PageIndex = index;  // 将保存的页面赋给Grid
BindData();                        // 然后再绑定一下数据

就在你保存行编辑数据的事件里加就OK了
--------------------编程问答-------------------- 谢谢,我试一下 --------------------编程问答-------------------- 我用的是DataGrid,我试了一下不行呀
这是我的那个保存行编辑数据的事件.
if(Session["qx"].ToString().IndexOf("录入")==-1)
Response.Write("<Script language=javascript> alert('对不起,你无权限编辑!'); </Script>");
else
{Response.Redirect("bzxg-1.aspx?bs="+DataGrid1.DataKeys[e.Item.ItemIndex].ToString().Trim());

//this.DataGrid1.DataKeys[e.Item.ItemIndex].ToString().Trim() = index;
//clBindGrid();
} --------------------编程问答-------------------- 希望高手进来帮帮忙呀?万分感谢. --------------------编程问答-------------------- 这个是asp的做法,你可以参考以下。

画面大概这么写:
==================================================
'设置一个隐藏的变量
<asp:textbox id="hidPosition" runat="server" Width="0">0</asp:textbox>

'注意这里的onscroll事件
'在画面滚动的时候保存位置
<div id="divA" ...... onscroll="getPosition()">
......
<asp:datagrid id="......">
......
</asp:datagrid>
......
</div>

<script language="javascript">
function getPosition() {
document.all.item("hidPosition").value=document.all.item("divA").scrollTop;
}
</script>
==================================================

然后可以在程序里通过向页面写javascript的方式定位datagrid显示位置
document.all.item('divA').scrollTop = hidPosition.Text
--------------------编程问答-------------------- 这种方法应该可以的,我这里能定位,但是可能会有js的报错,希望有更好的方法。 --------------------编程问答-------------------- 我试了,我这里不好使,也没提示出错,可就是不管用,还是回到第一条记录呢?还是非常感谢. --------------------编程问答-------------------- 为什么要在每行的末尾放删除和编辑按钮啊?
直接在DataGrid里面编辑不就好拉 --------------------编程问答-------------------- 在编辑按钮的界面中还涉及到记录的文件上传.必需的用,呵呵. --------------------编程问答-------------------- 什么啊?你是点编辑按钮跳到另一个画面?
返回后需要定位? --------------------编程问答-------------------- 为什么不放在一个界面上?
直接放一个上传文件的按钮多好啊 --------------------编程问答-------------------- document.all.item("divA").scrollTop
这句话就可以得到当前位置,不过是div的位置,datagrid要放在div里。
然后你回到这个页面前设置一下div位置
document.all.item("divA").scrollTop = 300
就可以了啊!我是asp.net 1.1测试的。
--------------------编程问答-------------------- 对,是的,返回后需要定位,帮帮忙吧,各位高手. --------------------编程问答-------------------- 是写在页面的html中吧?但没有<div .. /div>
我对脚本语言不太会呀,代码写的位置找不准呀, --------------------编程问答-------------------- 在Pag_Load里面加上这样一段代码可以解决
Page.SmartNavigation = true; --------------------编程问答-------------------- Page.SmartNavigation = true;我试过不管用,还是感谢.
--------------------编程问答-------------------- 你的datagrid在table里的吧,把table外面套个div,没有只能自己加一个了。
是在html里
<div id="divA" ...... onscroll="getPosition()">
......
<asp:datagrid id="......">
......
</asp:datagrid>
......
</div>
--------------------编程问答-------------------- 真是非常感谢,这么有耐心,这是我的html界面
<body onscroll="scrchange()" MS_POSITIONING="GridLayout">
<form id="Form1" method="post" runat="server">
<FONT face="宋体">
<asp:datagrid id="DataGrid1" style="Z-INDEX: 101; LEFT: 16px; POSITION: absolute; TOP: 56px" runat="server"
ForeColor="Black" CellSpacing="2" HorizontalAlign="Center" Font-Names="宋体" Font-Size="Small"
BorderWidth="3px" BorderStyle="Solid" BackColor="#CCCCCC" CellPadding="4" BorderColor="#999999"
AutoGenerateColumns="False" DataKeyField="标识">
<FooterStyle BackColor="#CCCCCC"></FooterStyle>
<SelectedItemStyle Font-Bold="True" ForeColor="White" BackColor="#000099"></SelectedItemStyle>
<ItemStyle Font-Size="Small" Font-Names="华文中宋" HorizontalAlign="Center" VerticalAlign="Middle"
BackColor="White"></ItemStyle>
<HeaderStyle Font-Bold="True" ForeColor="White" BackColor="Black"></HeaderStyle>
<Columns>
<asp:BoundColumn DataField="软件名称" HeaderText="软件名称">
<HeaderStyle Wrap="False" HorizontalAlign="Center" VerticalAlign="Middle"></HeaderStyle>
</asp:BoundColumn>
<asp:HyperLinkColumn DataNavigateUrlField="标识" DataNavigateUrlFormatString="xxgn.aspx?bs={0}" DataTextField="功能简介"
HeaderText="功能简介">
<HeaderStyle Wrap="False" HorizontalAlign="Center" VerticalAlign="Middle"></HeaderStyle>
</asp:HyperLinkColumn>
<asp:BoundColumn DataField="所属单位" HeaderText="所属单位">
<HeaderStyle Wrap="False" HorizontalAlign="Center" VerticalAlign="Middle"></HeaderStyle>
</asp:BoundColumn>
<asp:BoundColumn DataField="单机版数量" HeaderText="单机版数量">
<HeaderStyle Wrap="False" HorizontalAlign="Center" VerticalAlign="Middle"></HeaderStyle>
</asp:BoundColumn>
<asp:BoundColumn DataField="网络版节点数" HeaderText="网络版节点数">
<HeaderStyle Wrap="False" HorizontalAlign="Center" VerticalAlign="Middle"></HeaderStyle>
</asp:BoundColumn>
<asp:BoundColumn DataField="软件类型" HeaderText="软件类型">
<HeaderStyle Wrap="False" HorizontalAlign="Center" VerticalAlign="Middle"></HeaderStyle>
</asp:BoundColumn>
<asp:BoundColumn DataField="认证号" HeaderText="认证号">
<HeaderStyle Wrap="False" HorizontalAlign="Center" VerticalAlign="Middle"></HeaderStyle>
</asp:BoundColumn>
<asp:BoundColumn DataField="自编时间" HeaderText="自编时间">
<HeaderStyle Wrap="False" HorizontalAlign="Center" VerticalAlign="Middle"></HeaderStyle>
</asp:BoundColumn>
<asp:BoundColumn DataField="外购时间" HeaderText="外购时间">
<HeaderStyle Wrap="False" HorizontalAlign="Center" VerticalAlign="Middle"></HeaderStyle>
</asp:BoundColumn>
<asp:BoundColumn DataField="升级时间" HeaderText="升级时间">
<HeaderStyle Wrap="False" HorizontalAlign="Center" VerticalAlign="Middle"></HeaderStyle>
</asp:BoundColumn>
<asp:BoundColumn DataField="版本号" HeaderText="版本号">
<HeaderStyle Wrap="False" HorizontalAlign="Center" VerticalAlign="Middle"></HeaderStyle>
</asp:BoundColumn>
<asp:HyperLinkColumn DataNavigateUrlField="标识" DataNavigateUrlFormatString="slms.aspx?bs={0}" DataTextField="应用工程数量"
HeaderText="应用工程数量">
<HeaderStyle Wrap="False" HorizontalAlign="Center" VerticalAlign="Middle"></HeaderStyle>
</asp:HyperLinkColumn>
<asp:BoundColumn DataField="软件介质保管人" HeaderText="软件介质保管人">
<HeaderStyle Wrap="False" HorizontalAlign="Center" VerticalAlign="Middle"></HeaderStyle>
</asp:BoundColumn>
<asp:BoundColumn DataField="软件锁保管人" HeaderText="软件锁保管人 ">
<HeaderStyle Wrap="False" HorizontalAlign="Center" VerticalAlign="Middle"></HeaderStyle>
</asp:BoundColumn>
<asp:EditCommandColumn ButtonType="PushButton" UpdateText="更新" HeaderText="编辑" CancelText="取消" EditText="编辑">
<ItemStyle Font-Size="X-Small" Font-Names="楷体_GB2312"></ItemStyle>
</asp:EditCommandColumn>
<asp:ButtonColumn Text="删除" ButtonType="PushButton" HeaderText="删除" CommandName="Delete"></asp:ButtonColumn>
</Columns>
<PagerStyle HorizontalAlign="Center" ForeColor="Black" BackColor="#CCCCCC" Mode="NumericPages"></PagerStyle>
</asp:datagrid><asp:button id="Button2" style="Z-INDEX: 103; LEFT: 104px; POSITION: absolute; TOP: 24px" runat="server"
Font-Names="楷体_GB2312" Font-Size="Larger" BorderStyle="Double" BackColor="White" Font-Bold="True" Width="56px"
Height="32px" Text="返回"></asp:button><asp:button id="Button1" style="Z-INDEX: 102; LEFT: 16px; POSITION: absolute; TOP: 24px" runat="server"
Font-Names="楷体_GB2312" Font-Size="Larger" BorderStyle="Solid" BackColor="White" Font-Bold="True" Width="88px" Height="32px" Text="新建录入 "></asp:button><asp:textbox id="TextBox1" style="Z-INDEX: 104; LEFT: 176px; POSITION: absolute; TOP: 368px"
runat="server" Width="0px" Height="0px"></asp:textbox></FONT>
<SCRIPT language="javascript" type="text/javascript">
                   document.body.scrollTop=document.getElementById('TextBox1').value; 
                               function scrchange()
                  {
                    document.getElementById('TextBox1').value=document.body.scrollTop;
                  } 

</SCRIPT>
</form>
</body> --------------------编程问答-------------------- 这样看行不:
1: 选将数据库连接写到一个方法中如sql();
2: 当然是在Pag_Load里:
if(!Page.IsPostBack)
{
   sql();
}

3: 在如删除事件里:

this.DataGrid1.CurrentPageIndex = e.NewPageIndex;;

sql();
--------------------编程问答-------------------- 我试了不行呀,真头疼呀,好多人的方法到我这都不好使, --------------------编程问答-------------------- 这句位置可能不对,我再看看:
document.body.scrollTop=document.getElementById('TextBox1').value; 

另外:onscroll=scrchange() 你是放在<body>里的,我是放在<div>里的。
可能和这有关。 --------------------编程问答-------------------- 真是太感谢了,我要下班了,明天见 --------------------编程问答-------------------- onload=funTest()
试试把上面这句放到Response.Write( )里。 

<script language="javascript">
function funTest() {
    document.body.scrollTop=document.getElementById('TextBox1').text;
}
</script> --------------------编程问答-------------------- 还是不行呀,好奇怪呀?高手帮忙呀? --------------------编程问答-------------------- 你在PAGE_LOAD里都写什么了? --------------------编程问答-------------------- private void Page_Load(object sender, System.EventArgs e)
{
strConn=Session["lj"].ToString();
             // Page.SmartNavigation = true;
if(!IsPostBack)
{
if(Session["qx"].ToString().IndexOf("录入")==-1)
//Response.Redirect("xz.aspx");
                    Response.Write("<Script language=javascript> alert('对不起,你无权限修改!');window.location.href=\"mulu.aspx\"; </Script>");

else
                    startindex=0;
    clBindGrid();
} --------------------编程问答-------------------- public void clBindGrid()
{
DataSet ds=new DataSet();
SqlDataAdapter sqld;
str="select * from 应用软件信息 inner join 单位 on 应用软件信息.所属单位=单位.单位名称 order by 单位.id";
clsqlcon=new SqlConnection(strConn);
clsqlcon.Open();
sqld=new SqlDataAdapter(str,clsqlcon);
sqld.Fill(ds,"标识");
DataGrid1.DataSource=ds;
            DataGrid1.DataBind();
clsqlcon.Dispose();
if(Session["xh"].ToString().Trim()!="")
{
DataGrid1.SelectedIndex=int.Parse(Session["xh"].ToString());
}


private void DataGrid1_EditCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
if(Session["qx"].ToString().IndexOf("录入")==-1)

Response.Write("<Script language=javascript> alert('对不起,你无权限编辑!'); </Script>");
else
{  //Scroll(e.Item.ItemIndex);
Session["xh"]=e.Item.ItemIndex.ToString();
Response.Redirect("bzxg-1.aspx?bs="+DataGrid1.DataKeys[e.Item.ItemIndex].ToString().Trim());
this.DataGrid1.CurrentPageIndex = e.Item.ItemIndex;
                
                clBindGrid();
             
}
}

麻烦你帮忙看看吧
补充:.NET技术 ,  C#
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,