50分求解,第一题30分,第二题20分
全部使用VS2005/2008
1. 在default的设计界面上画一个按钮再随便写几行字,因为缺省的这几个字字体较大,所以又建立一个StyleSheet.css文件,再其中设定字体大小为12,并应用到default上去。在button1_Click上写一个Alert语句,并执行。
单击按钮后,弹出Alert(注意此时default页面什么也不显示),单击弹出的Alert的OK按钮,又重新显示default页面,发现所有的字体大小等元素都变大了!就跟没有被StyleSheet.css格式化一样。
如果再加一个按钮,让它执行把第一个按钮的Caption变成别的内容,那么大小回复原状。
我分析,可能是执行Alert后没有执行css?如果可能,希望大侠们告诉我程序执行了什么(语句?语块?等等)
另外,程序代码没有判断!Page.IsPostBack
2.如何在GridView上显示CheckBox?没功夫研究了,还是问的快。
谢谢!

解决方案 »

  1.   

    第二个问题:给gridview添加模板列,放入checkbox控件。
      

  2.   

    看来是强人,都是一颗红星了.呵呵
    1.是不是路径不对了啊.你可以用这种方式:
     Page.ClientScript.RegisterStartupScript(Page.GetType(),"myscript", "alert('ok')");2.GridView里可以起用ItemTemplate里包括html控件和服务器控件啊
    <asp:GridView ID="GridView1" runat="server">
            <Columns>
                <asp:TemplateField ShowHeader="False" HeaderText="选择">
                    <ItemStyle Width="60px" Wrap="False" />
                    <HeaderTemplate>
                        <asp:CheckBox ID="CheckBox1" runat="server"></asp:CheckBox>
                    </HeaderTemplate>
                    <ItemTemplate>
                        <asp:CheckBox ID="CheckBox1" runat="server"></asp:CheckBox>
                        <asp:TextBox ID="TextBox1" runat="server" Text='<%# Eval("EventID") %>' Visible="false"></asp:TextBox>
                    </ItemTemplate>
                </asp:TemplateField>
            </Columns>
            <HeaderStyle Font-Bold="False" BackColor="#EEEEEE" />
            <AlternatingRowStyle BackColor="#EEEEEE" />
    </asp:GridView>
      

  3.   


    <asp:Panel ID="Panel1" runat="server">
          <asp:GridView ID="GridView1" runat="server" Width="100%"
           AutoGenerateColumns="false"
           AllowPaging="True" 
           PageSize="10" 
           OnPageIndexChanging="GridView1_PageIndexChanging"
           PagerSettings-Mode="NextPrevious"
           >
            <PagerSettings FirstPageText="首页" LastPageText="尾页" Mode="NextPrevious" 
                NextPageText="下一页" Position="TopAndBottom" 
                PreviousPageText="上一页" />
    <Columns>
    <asp:TemplateField>
    <ItemTemplate>
       <asp:CheckBox ID="CheckBox1" runat="server" />
    </ItemTemplate>
    </asp:TemplateField>
      <asp:BoundField DataField="ProductId" HeaderText="商品ID"/>
       <asp:HyperLinkField  DataTextField="Name"
        DataTextFormatString="{0:c}" 
        DataNavigateUrlFields="ProductId"
        DataNavigateUrlFormatString="~/Admin/ProductSub.aspx?ProductId={0}"
        HeaderText="商品名称"
        />
      <asp:BoundField DataField="ListPrice" HeaderText="商品价格" DataFormatString="{0:c}" />
      <asp:BoundField DataField="Qty" HeaderText="库存" />
    </Columns>
    </asp:GridView><br />
    <asp:Button ID="Button1" runat="server" Text="删除商品" onclick="Button1_Click" />
    </asp:Panel>
      

  4.   

    2-4楼都是大虾:)第二题基本回答了,我也是没工夫研究,就偷个懒。主要是第一题。请教三楼:
    Page.ClientScript.RegisterStartupScript(Page.GetType(),"myscript", "alert('ok')"); 
    放在哪里?代替Alert语句?
    主页面Page_load--->Alert语句--->回到主页面
    这三步程序做了什么,运行了哪些隐藏的/没隐藏的代码(或者是什么也没运行)?
      

  5.   

    是的.顶替alert语句.应该只是在生成的页面的指定部位输出js内容或者是文件吧.这里有一些细节
    http://www.cnblogs.com/fubeidong/archive/2007/01/19/624529.html
      

  6.   

    放在按钮执行事件里
    Page.ClientScript.RegisterStartupScript(Page.GetType(),"myscript", "alert('ok')"); 
      

  7.   

    1.建议用
    Page.ClientScript.RegisterStartupScript来注册脚本快,页面上不会变成空白,比较好
    2.添加模板列,编辑模板,拖个CHECKBOX到GRIDVIEW里面即可
      

  8.   

    放在按钮CLICK事件里面即可以了.LZ没研究过ASP.NET吗?
      

  9.   

    第一个是不是CSS的路径有问题
      

  10.   

    关于第一个问题:3楼回答没有问题,但是:
    我其实是做个用户注册界面。所以有用户名,密码,确认密码三个文本框。下有注册,重置两个按钮。
    开始想用自带的验证控件,可问题是,我明明设定一个控件控制一个文本框不为空,但是实际执行结果是每个验证控件都控制着三个文本框(后来我就用一个验证控件设定控制一个文本框用户名不为空,但是密码等那两个控件内容为空时这个控件也起了作用)。所以只好自己在程序中自行验证,就采取了在单击注册按钮时依次判断三个文本框是否为空以及密码,确认密码两个文本框内容是否相等。输出用的是Response.Write("<script language='javascript'>alert('用户名不能为空')</script>");这样的语句,就出现了我上面提的问题。如果用三楼的方法,由于单击注册按钮有可能不确定或依次显示三个警告,我不知道如何更改代码了。当然如果用验证控件就能解决了就更好了。关于第二个问题:3,4,9楼肯定都是正解,但是:
    我这个GridView连的是一个Sql2005数据库,表中有一个名叫“选择”的字段,设为Bit类型,(其实这样不做任何更改,只要一绑定Gridview就自动显示为CheckBox形)我现在要在这个Gridview中可以更改这个选择字段,不知道怎么可以更改?
    我已经在编辑列中设定选择可以更改,其它列不能更改,但是实际仍然不能更改。并且我要求不能出现“Edit”列。
    此GridView开始将数据源在程序中绑定,后来不会将选择列ReadOnly设为false所以就加了一个数据控件和它绑定解决了此问题,并且为此数据控件自动生成了UpdateCommand,但是实际执行仍然不能在GridView上更改“选择”列的数据,我改怎么办呀?实在是刚学,水平不够,请大家见谅。
    另外,如果有人能解决在程序中绑定GridView,而又能修改其中任何一列或一行的数据的话,我再给50分。
    此难点是 1 在程序代码如何设置列、行(无法确定具体是哪列哪行)可以修改。
             2 如何在.CS文件中动态的修改GridView的ItemTemplate(或是在.aspx文件中动态修改?)
      

  11.   

    最简单的javascript 验证, 用required field validator, 加上 validation group 就不会互相影响了:
    <div>
     <asp:TextBox ID="TextBox1" runat="server" ValidationGroup="1"></asp:TextBox>
            <asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" ErrorMessage="Name cannot be empty" ControlToValidate="TextBox1" ValidationGroup="1"></asp:RequiredFieldValidator><br />
            <br />
            <asp:TextBox ID="TextBox2" runat="server" ValidationGroup="1"></asp:TextBox>
            <asp:RequiredFieldValidator ID="RequiredFieldValidator2" runat="server" ErrorMessage="Password cannot be empty" ControlToValidate="TextBox2" ValidationGroup="1"></asp:RequiredFieldValidator><br />
            <br />
            <asp:Button ID="Button1" runat="server" Text="Submit" OnClick="Button1_Click" ValidationGroup="1"/>&nbsp;<br />
            <br />
            <br />
            <br />
            <asp:TextBox ID="TextBox3" runat="server" ValidationGroup="2"></asp:TextBox>
            <asp:RequiredFieldValidator ID="RequiredFieldValidator3" runat="server" ControlToValidate="TextBox3"
                ErrorMessage="Birthday cannot be empty" ValidationGroup="2"></asp:RequiredFieldValidator><br />
            <br />
            <asp:TextBox ID="TextBox4" runat="server" ValidationGroup="2"></asp:TextBox>
            <asp:RequiredFieldValidator ID="RequiredFieldValidator4" runat="server" ControlToValidate="TextBox4"
                ErrorMessage="Age cannot be empty" ValidationGroup="2"></asp:RequiredFieldValidator><br />
            <br />
            <asp:Button ID="Button2" runat="server" Text="Submit" OnClick="Button1_Click" ValidationGroup="2"/>
    </div>
      

  12.   

    1.第一个问题,请参考楼上用ValidationGroup对验证进行分组,而不是通过后台进行if判断,再利用我们说的方法输出js.如果要用js判断,还不如直接全部在前台通过js判断呢.
      function checkForm(){
       if(document.getElementByID('<%=TextBox1.ClientID%>').value == '')
       {
         alert("不能为空");
         return false;
       }
       ..........
    }
     2.你现在应该是通过GridView自动绑定数据源,而且设置了AutoGenerateColumns 来自动生成列吧.呵呵
        其实你可以把这个属性设置成False,然后通过手动去设置每一个列,可以通过上面4楼中用的<ItemTemplate>进行数据显示.
       其中还可以设置<EditTemplate>这是编辑模板,也就是点击编辑时,每个列的状态.你如果只想编辑时修改其中那一个字段,那你只需要把对应的字段这个模板设置一下就行了.
      <EditItemTemplate>
       <asp:TextBox ID="amtpaid" runat="server" width="56px" height="12px" Font-Size="X-Small" Text='<%# Bind("AmountPaid") %>'></asp:TextBox>
        </EditItemTemplate>
      

  13.   

    1.是不是路径不对了啊.你可以用这种方式: 
    Page.ClientScript.RegisterStartupScript(Page.GetType(),"myscript", "alert('ok')"); 2.GridView里可以起用ItemTemplate里包括html控件和服务器控件啊 
    <asp:GridView ID="GridView1" runat="server"> 
            <Columns> 
                <asp:TemplateField ShowHeader="False" HeaderText="选择"> 
                    <ItemStyle Width="60px" Wrap="False" /> 
                    <HeaderTemplate> 
                        <asp:CheckBox ID="CheckBox1" runat="server"> </asp:CheckBox> 
                    </HeaderTemplate> 
                    <ItemTemplate> 
                        <asp:CheckBox ID="CheckBox1" runat="server"> </asp:CheckBox> 
                        <asp:TextBox ID="TextBox1" runat="server" Text=' <%# Eval("EventID") %>' Visible="false"> </asp:TextBox> 
                    </ItemTemplate> 
                </asp:TemplateField> 
            </Columns> 
            <HeaderStyle Font-Bold="False" BackColor="#EEEEEE" /> 
            <AlternatingRowStyle BackColor="#EEEEEE" /> 
    </asp:GridView>