小编dam*_*dam的帖子

如何在C#中多次执行存储过程

我有一个时间表应用程序,用户可以在一周的不同日期输入/输出他们的时间.表单处理每天的输入/输出,将它们作为参数填充到存储过程中并将它们添加到数据库中.我怎样才能最有效地完成这项工作?我无权访问数据库,只能访问存储过程.

这是背后的裸代码,我已经删除了一些不必要的代码.

SqlConnection conn = new SqlConnection(connString);
conn.Open();
SqlCommand cmd = new SqlCommand("insertINOUT", conn);
cmd.CommandType = CommandType.StoredProcedure;

cmd.Parameters.Add(new SqlParameter("@UserName", user));

for (int j = 0; j < weekDays.Length; j++)
{
    cmd.Parameters.Add(new SqlParameter("@In", in));
    cmd.Parameters.Add(new SqlParameter("@Out", out));
    cmd.ExecuteReader();
}
conn.Close();
Run Code Online (Sandbox Code Playgroud)

如果只有1天的进/出,代码可以工作.如果用户填写多天,我将收到此错误:多次提供参数'@In'.

谢谢你的帮助.

c# procedures

6
推荐指数
1
解决办法
1万
查看次数

将参数传递给sqldatasource,该参数绑定到gridview更新中的下拉列表

我有一个包含许多列的可编辑网格视图.其中两个是100mPlot和SubPlot.SubPlot不是唯一的(1A,1B,1C和1D),但100mPlot + SubPlot是一组唯一的值.

当用户单击"编辑"时,他们将在SubPlot列中看到下拉列表.此列表需要基于100mPlot的值.因此,为了显示SubPlot的正确值,我需要将100mPlot列中的值作为参数传递给将绑定到SubPlot下拉列表的sqldatasource.我该怎么做?

<asp:BoundField DataField="100mPlot" HeaderText="100m plot" 
     SortExpression="100mPlot" ReadOnly="True" />
<asp:TemplateField HeaderText="SubPlot" SortExpression="SubPlot">
     <EditItemTemplate>
         <asp:DropDownList ID="DropDownList1" runat="server" 
             DataSourceID="dsSubPlotNames" 
             DataTextField="SiteID" DataValueField="SiteID" 
             SelectedValue='<%# Bind("SiteID") %>'
             AppendDataBoundItems="True">
             <asp:ListItem Value=""></asp:ListItem>
         </asp:DropDownList>
         <asp:SqlDataSource ID="dsSubPlotNames" runat="server" 
             ConnectionString="<%$ ConnectionStrings:WERCMTX %>" SelectCommand="exec [339_PPM].usp_SubPlotNames_Select @100mPlotSiteID;">
             <SelectParameters>
                 <asp:Parameter Name="100mPlotSiteID" />
             </SelectParameters>
          </asp:SqlDataSource>
       </EditItemTemplate>
       <ItemTemplate>
           <asp:Label ID="Label3" runat="server" Text='<%# Bind("SubPlot")%>'></asp:Label>
       </ItemTemplate>
</asp:TemplateField>
Run Code Online (Sandbox Code Playgroud)

如您所见,参数名称"100mPlotSiteID"需要从100mPlot列中获取.我不知道如何更清楚地描述这一点,如果您有任何问题,请告诉我.谢谢你的帮助.

编辑新修改的代码.太近了!

<asp:TemplateField HeaderText="SubPlot" SortExpression="SubPlot">
    <EditItemTemplate>                            
        <asp:DropDownList ID="DropDownList1" runat="server" 
            DataSourceID="dsSubPlotNames" 
            DataTextField="SiteName" DataValueField="SiteID" 
            SelectedValue='<%# Bind("SiteID") %>'
        >
        </asp:DropDownList>
        <asp:SqlDataSource ID="dsSubPlotNames" runat="server" 
            ConnectionString="<%$ ConnectionStrings:WERCMTX %>" SelectCommand='exec [339_PPM].usp_SubPlotNames_Select null, @100mPlotName;'
            CancelSelectOnNullParameter="False"> …
Run Code Online (Sandbox Code Playgroud)

c# asp.net gridview drop-down-menu

1
推荐指数
1
解决办法
5305
查看次数

标签 统计

c# ×2

asp.net ×1

drop-down-menu ×1

gridview ×1

procedures ×1