两个很简单的问题,再加50分求解!

rock29 2008-11-26 01:35:49
A
在default的设计界面上做个用户注册界面。所以有用户名,密码,确认密码三个文本框。下有注册,重置两个按钮。因为缺省的这几个字体较大,所以又建立一个StyleSheet.css文件,位于同一路径,在其中设定字体大小为12,并拖拽应用到default上去。在button1_Click(注册)上写一个Response.Write("<script language='javascript'>alert('用户名不能为空')</script>");这样的语句,并执行。
单击按钮后,弹出Alert(注意此时default页面什么也不显示),单击弹出的Alert的OK按钮,又重新显示default页面,发现所有的字体大小等元素都变大了!就跟没有被StyleSheet.css格式化一样。
如果再加一个按钮,让它执行把第一个按钮的Caption变成别的内容,那么大小回复原状。
我分析,可能是执行Alert后没有执行css?如果可能,希望大侠们告诉我程序执行了什么(语句?语块?等等)
另外,程序代码没有判断!Page.IsPostBack

开始想用自带的验证控件,可问题是,我明明设定一个控件控制一个文本框不为空,但是实际执行结果是每个验证控件都控制着三个文本框(后来我就用一个验证控件设定控制一个文本框用户名不为空,但是密码等那两个控件内容为空时这个控件也起了作用)。
这又是为什么,如何更改?

有人建议用Page.ClientScript.RegisterStartupScript(Page.GetType(),"myscript", "alert('ok')"); 方式,但是由于单击注册按钮有可能不确定或依次显示三个警告,所以似乎用上面的不行,因为这是在Page_load中加载的,只能加载一个(因为在.aspx中相应的按钮控件上只能设一个属性)而我需要在单击注册时动态加载其中的一个事件/函数。

B
如何在GridView上显示CheckBox并且可以更改此列数据?
我这个GridView连的是一个Sql2005数据库,表中有一个名叫“选择”的字段,设为Bit类型,(其实这样不做任何更改,只要一绑定Gridview就自动显示为CheckBox形)我现在要在这个Gridview中可以更改这个选择字段,不知道怎么可以更改?
我已经在编辑列中设定选择可以更改,其它列不能更改,但是实际仍然不能更改。并且我要求不能出现“Edit”列。
此GridView开始将数据源在程序中绑定,后来不会将选择列ReadOnly设为false所以就加了一个数据控件和它绑定解决了此问题,并且为此数据控件自动生成了UpdateCommand,但是实际执行仍然不能在GridView上更改“选择”列的数据,我改怎么办呀?

实在是刚学,水平不够,请大家见谅。

另外,如果有人能解决在程序中绑定GridView,而又能修改其中任何一列或一行的数据的话,我再给50分。
此难点是 1 在程序代码如何设置列、行(无法确定具体是哪列哪行)可以修改。
2 如何在.CS文件中动态的修改GridView的ItemTemplate(或是在.aspx文件中动态修改?)
...全文
151 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
wesleyluo 2008-11-26
  • 打赏
  • 举报
回复
我也是刚学,我觉得应该慢慢来不要急,自己多看多想,收获多多哦。
yanrabbit163 2008-11-26
  • 打赏
  • 举报
回复
问题A:
用Response.Write出来的代码会写在HTML的第一行,不要这样写,用ClientScript.RegisterStartupScript
qshzf 2008-11-26
  • 打赏
  • 举报
回复
好复杂
hs1983 2008-11-26
  • 打赏
  • 举报
回复
给你个类似B问题的例子:
***.aspx:
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" 
Width="680px" AllowPaging="True"
DataKeyNames="id" onpageindexchanging="GridView1_PageIndexChanging"
onrowdeleting="GridView1_RowDeleting">
<Columns>
<asp:TemplateField FooterText="全选" HeaderText="选择">
<HeaderTemplate>
<asp:CheckBox ID="CheckBox2" runat="server" AutoPostBack="True" Text="全选" OnCheckedChanged="CheckAll" />   
</HeaderTemplate>
<ItemTemplate>
<asp:CheckBox ID="CheckBox1" runat="server" AutoPostBack="True" Font-Names="宋体" Font-Size="9pt" />
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField DataField="id" HeaderText="公告ID" />
<asp:BoundField DataField="title" HeaderText="公告标题" />
<asp:BoundField DataField="publish_date" HeaderText="发布时间" />
</Columns>
</asp:GridView>
<asp:Button ID="CheckNewsPass" runat="server" CausesValidation="false" CssClass="Button" Text="审核"
onclick="CheckNewsPass_Click" Width="45px" />


***.aspx.cs:
#region GridView全选/取消
protected void CheckAll(object sender, EventArgs e)
{
CheckBox cb = (CheckBox)sender;

if (cb.Text == "全选")
{
foreach (GridViewRow gv in this.GridView1.Rows)
{
CheckBox cd = (CheckBox)gv.FindControl("CheckBox1");
cd.Checked = cb.Checked;
cb.Text = "取消";
}
}
else
{
cb.Text = "取消";
foreach (GridViewRow gv in this.GridView1.Rows)
{
CheckBox cd = (CheckBox)gv.FindControl("CheckBox1");
cd.Checked = cb.Checked;
cb.Text = "全选";
}

}
}
#endregion
#region 审核通过
protected void CheckNewsPass_Click(object sender, EventArgs e)
{
if (Session["YHLX"].ToString() == "3" && Session["JGLB"].ToString() != "1")
{
Response.Write("<script>alert('对不起,您没有审核权限!')</script>");
}
else
{
News news = new News();
foreach (GridViewRow gv in GridView1.Rows)
{
CheckBox cb = (CheckBox)gv.FindControl("CheckBox1");
if (cb.Checked)
{
CustomerInfo customer = CustomerInfoService.GetKHID(lbKHDM.Text);//由KHDM获取其KHID
int KHID = customer.KHID;
int index = gv.RowIndex;
DataKey key = this.GridView1.DataKeys[index];//获取主键
Int64 ID = Convert.ToInt64(key.Values["id"]);
Hashtable ht = new Hashtable();
ht.Add("operator_no", KHID);
ht.Add("operator_pass", "");
ht.Add("oper_type", 1);
ht.Add("id", ID);
ht.Add("result", 2);
news = Mapper.Instance().QueryForObject<News>("Procedure.CheckNews", ht);
GridViewBind();
}
}
if (news.error_no == 0)
{
Response.Write("<script>alert('执行成功!')</script>");
}
else
{
Response.Write("<script>alert('" + news.error_msg.ToString() + "')</script>");
}
}

}
#endregion
rock29 2008-11-26
  • 打赏
  • 举报
回复
B自己解决:
加一列<column>
加一模板<asp:TemplateField><ItemTemplate>
加checkbox <asp:CheckBox ..../>
隐藏bit字段。

真简单啊,折腾了一晚,还是不熟啊!
pl1069 2008-11-26
  • 打赏
  • 举报
回复
很复杂,学习

111,131

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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