学生党虚心求教一个问题

wangjimmy1994 2014-04-24 09:51:40
学生党,做一个网站的发布信息功能,用ASP.NET做的,要实现如图所示的
点打开的时候状态栏显示发布中,点关闭的时候状态栏显示已关闭,同时文字变化,思路是通过传?id然后通过id的值对应来做操作,但不知为何会做成这样 点任意一行的文字其他行的文字也一起变化,我要的效果是每一行的打开关闭时独立控制的



部分代码:


//前台代码
<p align="center"><a href="add.aspx">发布家教信息</a></p>
<table width="95%" border="0" align="center" cellpadding="4" cellspacing="1" bgcolor="#CCCCCC">
<tr bgcolor="#F6F6F6" align="center" class="title1">
<td>序号</td>
<td>名称</td>
<td>类型</td>
<td>收费</td>
<td>方式</td>
<td>发布时间</td>
<td>点击</td>
<td>状态</td>
<td>操作</td>
</tr>
<%=test %>


</table>





这段代码是为了点击超链接时刷新页面同时更新一些参数的,hid是数据库中的主键
#region 载入时显示
if (Request["del_id"] != null)
{
string a = Request["del_id"];
SqlConnection conn = new SqlConnection(DBAccess.StrConn);
conn.Open();
string sql = "DELETE FROM [HomeEduInfo] WHERE hID=" + a;
SqlCommand comm = new SqlCommand();
comm.Connection = conn;
comm.CommandText = sql;
comm.ExecuteNonQuery();
conn.Close();

}
//...aspx?hid=32&op=1
if (Request["hid"] != null)
{

string b = Request["hid"];
SqlConnection conn1 = new SqlConnection(DBAccess.StrConn);
conn1.Open();
if (Request["op"] == "1")
{
string sql1 = "UPDATE [weiqi].[dbo].[HomeEduInfo] SET hStatus =1 where hid=" + b;
SqlCommand cmd = new SqlCommand(sql1, conn1);
cmd.ExecuteNonQuery();
}
else
{
string sql1 = "UPDATE [weiqi].[dbo].[HomeEduInfo] SET hStatus =0 where hid=" + b;
SqlCommand cmd = new SqlCommand(sql1, conn1);
cmd.ExecuteNonQuery();
}






//拼装 tr td 代码
SqlConnection conn = new SqlConnection("Data Source=.;Initial Catalog=weiqi;Integrated Security=True");
string sql = "SELECT [hID],[hTitle],[hEduType],[hCost],[hEduway],convert(varchar(10),GETDATE(),111),[hClicknum],[hStatus]"
+ "FROM [HomeEduInfo]";
SqlCommand cmd = new SqlCommand(sql,conn);
SqlDataAdapter sda = new SqlDataAdapter(cmd);
DataSet ds = new DataSet();
sda.Fill(ds);

if (ds.Tables[0].Rows.Count > 0)
{
for (int i = 0; i < (ds.Tables[0].Rows.Count); i++)
{
number++;
//string a = Request["hid"];
test += "<tr bgcolor='#F6F6F6' align='center' class='title1'>";
for (int j = 0; j < ds.Tables[0].Columns.Count; j++)
{
if (j == 7)
{
if (ds.Tables[0].Rows[i][7].ToString() == "1")
{
test += "<td>" + "发布中" + "</td>";
}
else if (ds.Tables[0].Rows[i][7].ToString() == "0")
test += "<td>" + "已关闭" + "</td>";
}
else if (j == 1)
{
test += "<td>" + "<a href=detail.aspx?hid=" + ds.Tables[0].Rows[i][0] + " target=" + "_blank" + ">" + ds.Tables[0].Rows[i][1].ToString() + "</a>" + "</td>";
}
else if (j == 6)
{
test += "<td>" + ds.Tables[0].Rows[i][6] + "次" + "</td>";
}
else if (j == 0)
{
test += "<td>" + number + "</td>";
}
else
{
test += "<td>" + ds.Tables[0].Rows[i][j].ToString() + "</td>";
}

}
string op = "";//记录状态,值为数据库中取出,0代表关闭,1代表打开
String wenzi = "关闭";
if (Request["op"] == "1")
{
wenzi = "关闭";
op = "0";
}
else
{
wenzi = "打开";
op = "1";
}
test += "<td> <a href=manage.aspx?hid=" + ds.Tables[0].Rows[i][0] + "&" + "op=" + op + ">" + wenzi + "</a> <a href=?del_id=" + ds.Tables[0].Rows[i][0] + " onclick=\"return confirm('确定要删除?')\"+)>删除</a> <a href=edit.aspx?edit_id=" + ds.Tables[0].Rows[i][0] + " onclick=" + "\"" + "window.open(this.href, '_blank','scrollbars=0,resizable=0;width=300,height=400');" + " return false" + "\"" + ">修改</a></td>";
test += "</tr>";
}
}

刚入门,很多不会的,我知道代码肯定哪里错了,但是不知道哪里,望好心人指出,我好改正,谢谢
...全文
181 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
moonwrite 2014-04-25
  • 打赏
  • 举报
回复
不用控件了~ 为什么不用mvc呢~
  • 打赏
  • 举报
回复
你点击行 也会触发 应该是

      else if (j == 1)
                    {
                        test += "<td>" + "<a href=detail.aspx?hid=" + ds.Tables[0].Rows[i][0] + " target=" + "_blank" + ">" + ds.Tables[0].Rows[i][1].ToString() + "</a>" + "</td>";
                    }
这里循环有问题 你可以 生成后 打开调试工具(浏览器一般都有 F12打开) 然后看看页面的代码 和你想的是否一样
  • 打赏
  • 举报
回复
建议看看 #insus 的资料 是大神 博客里面有很多好东西 代码中

这段代码是为了点击超链接时刷新页面同时更新一些参数的,hid是数据库中的主键
#region 载入时显示
        if (Request["del_id"] != null)
        {
            string a = Request["del_id"];
            SqlConnection conn = new SqlConnection(DBAccess.StrConn);
            conn.Open();
            string sql = "DELETE FROM [HomeEduInfo] WHERE hID=" + a;
            SqlCommand comm = new SqlCommand();
            comm.Connection = conn;
            comm.CommandText = sql;
            comm.ExecuteNonQuery();
            conn.Close();
           
        }
        //...aspx?hid=32&op=1
        if (Request["hid"] != null)
        {

            string b = Request["hid"];
            SqlConnection conn1 = new SqlConnection(DBAccess.StrConn);
            conn1.Open();
            if (Request["op"] == "1")
            {
                string sql1 = "UPDATE [weiqi].[dbo].[HomeEduInfo] SET hStatus =1 where hid=" + b;
                SqlCommand cmd = new SqlCommand(sql1, conn1);
                cmd.ExecuteNonQuery();
            }
            else
            {
                string sql1 = "UPDATE [weiqi].[dbo].[HomeEduInfo] SET hStatus =0 where hid=" + b;
                SqlCommand cmd = new SqlCommand(sql1, conn1);
                cmd.ExecuteNonQuery();
            }
这段代码调试下 问题应该在这里。。
小子哟 2014-04-25
  • 打赏
  • 举报
回复
楼上的挺好
wangjimmy1994 2014-04-25
  • 打赏
  • 举报
回复
我愚蠢了,其实我只要把 if (request["op"] == "1") { wenzi = "关闭"; op = "0"; } 改成 if (ds.Tables[0].Rows[i][7].ToString() == "1") { wenzi = "关闭"; op = "0"; } 就解决问题了
wangjimmy1994 2014-04-25
  • 打赏
  • 举报
回复
我现在发现问题好像出在因为循环我每一行都在a href里传进去一个op和文字,所以点击的时候有文字和op的单元格状态全都变了
insus 2014-04-24
  • 打赏
  • 举报
回复
threenewbee 2014-04-24
  • 打赏
  • 举报
回复
自己下个断点,调试下 if (ds.Tables[0].Rows[i][7].ToString() == "1") { test += "<td>" + "发布中" + "</td>"; } else if (ds.Tables[0].Rows[i][7].ToString() == "0") test += "<td>" + "已关闭" + "</td>"; 这几行

62,041

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧