<asp:HiddenField ID="HiddenField1" runat="server" Value='<%#Eval("id") %>' />点击某行时..如何获取 这一行的,上一行,或者 下一行 的id
解决方案 »
- c#从sql数据库表里取一个值怎么实现。
- 在线等回复啊!急急急急急急急急急急!关于pagedatasource效率问题!
- ■■请教星级高手:通过读数据库,如何向局域网内其它机器固定目录中写INI文件?■■
- Request.Params有什么作用啊?
- 有ajax.net pro问题请教
- asp.net和asp用UrlEncode后得到的值不一样,怎么解决?
- .net 压缩图象音频视频
- 我申请了asp.net空间(sqlserver数据库),请问如何在数据库里建个表?
- 如何隐藏asp.net自动生成的脚本不让他直接显示在页面中?例如验证脚本
- 水晶报表在iframe中为什么会跳转到新页面
- 请教下GridView取值问题
- asp.net如何实现视频聊天功能?
{
GridViewRow gvr = (sender as Button).NamingContainer as GridViewRow;
if(gvr != null)
{
string a = ((HiddenField)gvr.FindControl("HiddenField1")).Value;
}
}
上一行id,select top 1 id from table where id<@id order by desc
下一行id,select top 1 id from table where id>@id
CREATE PROCEDURE [sp_trans_dept]
@now_id int,
@upside_id intAS
declare @tmp_ordering int --临时变量
declare @sqlstr varchar(1000) --sql语句
declare @table_name varchar(500)
declare @column_name varchar(500)
set @table_name='tb_dept'
set @column_name='deptID'
select @tmp_ordering=ordering from tb_dept where deptID=@now_id
set @sqlstr='
update '+@table_name+' set ordering=(select ordering from '+@table_name+' where '+@column_name+'='+convert(varchar(50),@upside_id)+')
where '+@column_name+'='+convert(varchar(50),@now_id)
exec(@sqlstr)
set @sqlstr='
update '+@table_name+' set ordering = '+convert(varchar(50),@tmp_ordering)+'
where '+@column_name+'='+convert(varchar(50),@upside_id)
exec (@sqlstr)
GO
触发器代码:
CREATE TRIGGER TRI_tb_dept ON dbo.tb_dept
FOR INSERT
AS
update dbo.tb_dept
set ordering=inserted.deptID
from inserted
where tb_dept.deptID=inserted.deptID
程序后台代码:
SQLOperation opera = new SQLOperation();
protected void Page_Load(object sender, EventArgs e)
{
}
protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
{
int index = Convert.ToInt32(e.CommandArgument);
if (e.CommandName == "row_up")
{
if ((index - 1) >= 0) {
int now_id = (int)GridView1.DataKeys[index].Value;
int upside=(int)GridView1.DataKeys[index-1].Value;
try
{
opera.StoredProcedureOrdering("sp_trans_dept", "@now_id", "@upside_id", now_id, upside);
GridView1.DataBind();
}
catch (Exception ex)
{
Response.Write(ex.Message);
Response.End();
}
}
else
{
Alert("已经是首行,不能上移");
}
}
else if (e.CommandName=="row_down")
{
int rowsCount = GridView1.Rows.Count;
if ((index+1)<rowsCount)
{
int now_id = (int)GridView1.DataKeys[index].Value;
int upside = (int)GridView1.DataKeys[index + 1].Value;
try
{
opera.StoredProcedureOrdering("sp_trans_dept", "@now_id", "@upside_id", now_id, upside);
GridView1.DataBind();
}
catch (Exception ex)
{
Response.Write(ex.Message);
Response.End();
}
}
else
{
Alert("已经是尾行,不能下移");
}
}
}
#region 警告信息
public void Alert(string message)
{
string outstr = "";
outstr += "<script type='text/javascript'>";
outstr += "alert('" + message + "');";
outstr += "</script>";
Response.Write(outstr);
}
#endregion
程序前台代码:
<asp:ButtonField CommandName="row_up" Text="上移">
<ItemStyle Width="40px" />
</asp:ButtonField>
<asp:ButtonField CommandName="row_down" Text="下移">
<ItemStyle Width="40px" />
</asp:ButtonField>
C#调用存储过程代码:
public override void StoredProcedureOrdering(string sp_Name,string para_name1,string para_name2,int value_1,int value_2)
{
System.Data.SqlClient.SqlCommand cmd = new System.Data.SqlClient.SqlCommand(sp_Name, conn);
if (conn.State.ToString() == "Closed")
conn.Open();
cmd.CommandType = System.Data.CommandType.StoredProcedure;
cmd.Parameters.Add(para_name1, SqlDbType.Int, 4).Value = value_1;
cmd.Parameters.Add(para_name2, SqlDbType.Int, 4).Value = value_2;
try
{
cmd.ExecuteNonQuery();
}
catch (SqlException ex)
{
throw new Exception(ex.Message.ToString());
}
}