在将网格视图转换为as:templatefield

如何解决在将网格视图转换为as:templatefield

Visual Studio的强大向导

(asp.net C#)

我对员工技能有2个gridviews。为了简化问题,我只有员工badge_ID(123 = John Doe)和skill_ID(34 = CNC车床使用知识)。我的数据库表如下所示:

table: empl_skills
ref_no (key) badge_ID   Skill_ID   prof_value     Need_Improve   skill_update   
------       --------   --------   ------------   ------------   ------------
  1            123          35        Expert           No         10/08/20
  2            123          36        Proficient       No         10/08/20
  3            123          37        Expert           No         10/08/20
  4            319          12        Expert           No         10/08/20
  5            319          60        Basic            Yes        10/08/20
  6            225          62        Proficient       No         10/08/20
  7            225          71        Proficient       No         10/08/20
The first ref_no column is the primary key that is (1,1) identity

设置非常简单。第一个Gridview1仅显示badge_ID和SELECT,因此您可以选择员工。选择后,将隐藏Gridview1,第二个Gridview2仅显示已启用EDIT和DELETE命令域的员工技能。一切都很好,我在不到5分钟的时间内就在设计器中构建了代码。

现在,我想添加一个INSERT函数。我打算在FooterTemplate中执行此操作,在主键列(ref_no)中具有INSERT链接按钮,而在其他列中具有用于输入数据的文本框。为此,我首先需要将默认的asp:boundfields转换为asp:templatefields。一旦完成了字段的转换,我在命令字段中的EDIT和DELETE函数便停止工作,我不知道为什么。

这真的很令人发疯,因为在下面的所有其他这些Web表单中-超过30次,我已经将默认的asp:boundfields转换为asp:templatefields,而且我从未遇到过此问题。

Other Successful WebForms

希望有人能告诉我发生了什么事吗?

在Gridview1中选择一名员工(我删除了样式设置)

<asp:GridView ID="GridView1" runat="server" BackColor="White" BorderColor="#999999" 
   BorderStyle="Solid" BorderWidth="1px" 
   CellPadding="3" CssClass="centerMyHeader" DataKeyNames="badge_ID" 
   DataSourceID="SqlDataSource1" OnPreRender="GridView1_PreRender" 
   ForeColor="Black" GridLines="Vertical">
   <AlternatingRowStyle BackColor="#EEEEEE" />
   <Columns>
      <asp:CommandField ShowSelectButton="True" />
   </Columns>
</asp:GridView>

这里的Gridview2的边界域转换为模板域:

<asp:GridView ID="GridView2" runat="server" BackColor="White" BorderColor="#999999" 
   BorderStyle="Solid" BorderWidth="1px" 
   CellPadding="3" CssClass="centerMyHeader" DataSourceID="SqlDataSource2" 
   ForeColor="Black" GridLines="Vertical" AutoGenerateColumns="False">
   <AlternatingRowStyle BackColor="#EEEEEE" />
   <Columns>
      <asp:CommandField ShowDeleteButton="True" ShowEditButton="True" />
      <asp:TemplateField HeaderText="ref_no" InsertVisible="False" SortExpression="ref_no">
         <EditItemTemplate>
            <asp:Label ID="Label1" runat="server" Text='<%# Eval("ref_no") %>'></asp:Label>
         </EditItemTemplate>
         <ItemTemplate>
            <asp:Label ID="Label6" runat="server" Text='<%# Bind("ref_no") %>'></asp:Label>
         </ItemTemplate>
       </asp:TemplateField>
       <asp:TemplateField HeaderText="badge_ID" SortExpression="badge_ID">
          <EditItemTemplate>
             <asp:TextBox ID="TextBox1" runat="server" Text='<%# Bind("badge_ID") %>'> 
             </asp:TextBox>
          </EditItemTemplate>
          <ItemTemplate>
             <asp:Label ID="Label1" runat="server" Text='<%# Bind("badge_ID") %>'></asp:Label>
          </ItemTemplate>
       </asp:TemplateField>
       <asp:TemplateField HeaderText="skill_ID" SortExpression="skill_ID">
       <EditItemTemplate>
         <asp:TextBox ID="TextBox2" runat="server" Text='<%# Bind("skill_ID") %>'></asp:TextBox>
       </EditItemTemplate>
       <ItemTemplate>
          <asp:Label ID="Label2" runat="server" Text='<%# Bind("skill_ID") %>'></asp:Label>
       </ItemTemplate>
       </asp:TemplateField>
       <asp:TemplateField HeaderText="prof_value" SortExpression="prof_value">
       <EditItemTemplate>
          <asp:TextBox ID="TextBox3" runat="server" Text='<%# Bind("prof_value") %>'>
          </asp:TextBox>
       </EditItemTemplate>
       <ItemTemplate>
          <asp:Label ID="Label3" runat="server" Text='<%# Bind("prof_value") %>'></asp:Label>
       </ItemTemplate>
       </asp:TemplateField>
       <asp:TemplateField HeaderText="need_improve" SortExpression="need_improve">
          <EditItemTemplate>
          <asp:TextBox ID="TextBox4" runat="server" Text='<%# Bind("need_improve") %>'>
          </asp:TextBox>
          </EditItemTemplate>
          <ItemTemplate>
             <asp:Label ID="Label4" runat="server" Text='<%# Bind("need_improve") %>'>
             </asp:Label>
          </ItemTemplate>
       </asp:TemplateField>
       <asp:TemplateField HeaderText="skill_update" SortExpression="skill_update">
          <EditItemTemplate>
             <asp:TextBox ID="TextBox5" runat="server" Text='<%# Bind("skill_update") %>'>
             </asp:TextBox>
           </EditItemTemplate>
           <ItemTemplate>
              <asp:Label ID="Label5" runat="server" Text='<%# Bind("skill_update") %>'>
              </asp:Label>
           </ItemTemplate>
           </asp:TemplateField>
   </Columns>
</asp:GridView>

CodeFile仅隐藏应该显示或不显示的任何网格视图:

    protected void GridView1_PreRender(object sender,EventArgs e)
    {
        if (GridView1.SelectedRow != null)
        {
            //when one employee is selected
            GridView1.Visible = false;
            Label1.Visible = false;
            GridView2.Visible = true;
            Label2.Visible = true;
            btnReload2.Visible = true;
        }
        else
        {
            //when the selection list is up (no one selected yet)
            GridView2.Visible = false;
            Label2.Visible = false;
            GridView1.Visible = true;
            Label1.Visible = true;
            btnReload2.Visible = false;
        }
    }

虽然最初只花了5分钟即可构建gridview(您可以看到我做了多少次),但我还是花了最后两天的时间来使用templatefields进行这项工作。有人可以帮忙吗?谢谢,约翰

编辑:对不起-我没有说会发生什么。

“编辑”链接按钮:在单击“编辑”的一行上,出现文本框,并且我可以更改任何列中的数据。然后,单击更新。结果:更改不会发生,并且不会引发任何错误。本质上什么也没发生

删除链接按钮:单击删除时,Web表单将引发错误:必须声明标量变量“ @ref_no”。不知道它们是什么意思,还是在哪里?这是在UpdateParameters中声明了ref_no的SqlDataSource2:

<asp:SqlDataSource ID="SqlDataSource2" runat="server" ConnectionString="<%$ ConnectionStrings:TrainingDBConnection %>" 
    DeleteCommand="DELETE FROM [empl_skills] WHERE [ref_no] = @ref_no" 
    InsertCommand="INSERT INTO [empl_skills] ([badge_ID],[skill_ID],[need_improve],[skill_update],[prof_value]) 
         VALUES (@badge_ID,@skill_ID,@need_improve,@skill_update,@prof_value)" 
    SelectCommand="SELECT [ref_no],[badge_ID],[prof_value] FROM [empl_skills] WHERE ([badge_ID] = @badge_ID)" 
    UpdateCommand="UPDATE [empl_skills] SET [badge_ID] = @badge_ID,[skill_ID] = @skill_ID,[need_improve] = @need_improve,[skill_update] = @skill_update,[prof_value] = @prof_value WHERE [ref_no] = @ref_no">
    <DeleteParameters>
        <asp:Parameter Name="ref_no" Type="Int32" />
    </DeleteParameters>
    <InsertParameters>
        <asp:Parameter Name="badge_ID" Type="Int32" />
        <asp:Parameter Name="skill_ID" Type="Int32" />
        <asp:Parameter Name="need_improve" Type="String" />
        <asp:Parameter DbType="Date" Name="skill_update" />
        <asp:Parameter Name="prof_value" Type="String" />
    </InsertParameters>
    <SelectParameters>
        <asp:ControlParameter ControlID="GridView1" Name="badge_ID" PropertyName="SelectedValue" Type="Int32" />
    </SelectParameters>
    <UpdateParameters>
        <asp:Parameter Name="badge_ID" Type="Int32" />
        <asp:Parameter Name="skill_ID" Type="Int32" />
        <asp:Parameter Name="need_improve" Type="String" />
        <asp:Parameter DbType="Date" Name="skill_update" />
        <asp:Parameter Name="prof_value" Type="String" />
        <asp:Parameter Name="ref_no" Type="Int32" />
    </UpdateParameters>
</asp:SqlDataSource>

谢谢。

解决方法

没关系-我想没有兴趣。我将第二个详细信息Gridview转换为一个DetailsView,该视图已经具有Edit,Delete和Insert命令域。问题已解决-没有自定义代码。完美地工作。我想再也没有人真正在乎Webform,因为它已经太老了。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


依赖报错 idea导入项目后依赖报错,解决方案:https://blog.csdn.net/weixin_42420249/article/details/81191861 依赖版本报错:更换其他版本 无法下载依赖可参考:https://blog.csdn.net/weixin_42628809/a
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下 2021-12-03 13:33:33.927 ERROR 7228 [ main] o.s.b.d.LoggingFailureAnalysisReporter : *************************** APPL
错误1:gradle项目控制台输出为乱码 # 解决方案:https://blog.csdn.net/weixin_43501566/article/details/112482302 # 在gradle-wrapper.properties 添加以下内容 org.gradle.jvmargs=-Df
错误还原:在查询的过程中,传入的workType为0时,该条件不起作用 &lt;select id=&quot;xxx&quot;&gt; SELECT di.id, di.name, di.work_type, di.updated... &lt;where&gt; &lt;if test=&qu
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct redisServer’没有名为‘server_cpulist’的成员 redisSetCpuAffinity(server.server_cpulist); ^ server.c: 在函数‘hasActiveC
解决方案1 1、改项目中.idea/workspace.xml配置文件,增加dynamic.classpath参数 2、搜索PropertiesComponent,添加如下 &lt;property name=&quot;dynamic.classpath&quot; value=&quot;tru
删除根组件app.vue中的默认代码后报错:Module Error (from ./node_modules/eslint-loader/index.js): 解决方案:关闭ESlint代码检测,在项目根目录创建vue.config.js,在文件中添加 module.exports = { lin
查看spark默认的python版本 [root@master day27]# pyspark /home/software/spark-2.3.4-bin-hadoop2.7/conf/spark-env.sh: line 2: /usr/local/hadoop/bin/hadoop: No s
使用本地python环境可以成功执行 import pandas as pd import matplotlib.pyplot as plt # 设置字体 plt.rcParams[&#39;font.sans-serif&#39;] = [&#39;SimHei&#39;] # 能正确显示负号 p
错误1:Request method ‘DELETE‘ not supported 错误还原:controller层有一个接口,访问该接口时报错:Request method ‘DELETE‘ not supported 错误原因:没有接收到前端传入的参数,修改为如下 参考 错误2:cannot r
错误1:启动docker镜像时报错:Error response from daemon: driver failed programming external connectivity on endpoint quirky_allen 解决方法:重启docker -&gt; systemctl r
错误1:private field ‘xxx‘ is never assigned 按Altʾnter快捷键,选择第2项 参考:https://blog.csdn.net/shi_hong_fei_hei/article/details/88814070 错误2:启动时报错,不能找到主启动类 #
报错如下,通过源不能下载,最后警告pip需升级版本 Requirement already satisfied: pip in c:\users\ychen\appdata\local\programs\python\python310\lib\site-packages (22.0.4) Coll
错误1:maven打包报错 错误还原:使用maven打包项目时报错如下 [ERROR] Failed to execute goal org.apache.maven.plugins:maven-resources-plugin:3.2.0:resources (default-resources)
错误1:服务调用时报错 服务消费者模块assess通过openFeign调用服务提供者模块hires 如下为服务提供者模块hires的控制层接口 @RestController @RequestMapping(&quot;/hires&quot;) public class FeignControl
错误1:运行项目后报如下错误 解决方案 报错2:Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.1:compile (default-compile) on project sb 解决方案:在pom.
参考 错误原因 过滤器或拦截器在生效时,redisTemplate还没有注入 解决方案:在注入容器时就生效 @Component //项目运行时就注入Spring容器 public class RedisBean { @Resource private RedisTemplate&lt;String
使用vite构建项目报错 C:\Users\ychen\work&gt;npm init @vitejs/app @vitejs/create-app is deprecated, use npm init vite instead C:\Users\ychen\AppData\Local\npm-