首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >编辑和删除asp:命令字段在网格视图转换为asp:templatefield后停止工作

编辑和删除asp:命令字段在网格视图转换为asp:templatefield后停止工作
EN

Stack Overflow用户
提问于 2020-10-09 02:37:08
回答 1查看 61关注 0票数 0

O‘Visual Studio强大而强大的向导,

(asp.net C#)

我有两个关于员工技能的网格视图。为了简化问题,我只有employee badge_ID (123 =无名氏)和skill_ID (34 =数控车床使用知识)。我的数据库表如下所示:

代码语言:javascript
运行
复制
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仅显示该员工的技能,并打开编辑和删除命令字段。这一切都工作得很好,我在设计器中构建了代码,所有工作都在5分钟内完成。

现在我想添加一个插入函数。我打算在主键列(ref_no)中使用INSERT linkbutton并在用于数据输入的其他列中使用textboxes,在FooterTemplate中执行此操作。为此,我首先需要将默认的asp:boundfields转换为asp:templatefield。一旦我完成了字段的转换,我在命令字段中的编辑和删除功能就停止工作了,我不知道为什么。

这真的很让人抓狂,因为在下面所有这些had表单中-超过30次,我将默认的asp:boundfield转换为asp:templatefield,而我从来没有遇到过这个问题。

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

下面是选择员工的Gridview1 (我去掉了样式部分)

代码语言:javascript
运行
复制
<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:

代码语言:javascript
运行
复制
<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只是隐藏了任何应该显示或不显示的网格视图:

代码语言:javascript
运行
复制
    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分钟来构建网格视图(你可以看到我做了多少次),但我在过去的两天里一直在尝试使用模板字段来实现这一点。有人能帮帮忙吗?谢谢,约翰

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

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

删除链接按钮:当单击删除时,webform抛出错误:必须声明标量变量"@ref_no“。不知道这是什么意思,也不知道在哪里?下面是在UpdateParameters中声明了ref_no的SqlDataSource2:

代码语言:javascript
运行
复制
<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], [skill_ID], [need_improve], [skill_update], [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>

谢谢。

EN

回答 1

Stack Overflow用户

发布于 2020-10-10 04:17:28

不要紧--我想没有利息吧。我将第二个细节网格视图转换为一个已经有编辑、删除和插入命令字段的DetailsView。问题解决了-没有自定义代码。工作完美无瑕。我猜现在已经没有人真正关心webforms了,太老了。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64268712

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档