0

yyyy-MM-ddasp.net Webページ内のSQLストアドプロシージャに日付(フォーマット[ie 2013-08-01]の文字列としてフォーマット)を渡そうとする面白い状況があります。ストアド プロシージャをセットアップしましたが、日付をパラメーターとして渡す必要があります。必要な日付は別の SQL テーブルにあるので、必要な日付を提供し、Web ページで非表示にするために非表示にできる を作成しましたTextBox(これを と呼びますendDATE)。

問題は、TextBoxが に含まれてDetailsViewいるため、ストアド プロシージャでアクセスできないようです。

私は、TextBox使用している VB コードからストアド プロシージャに文字列を渡そうとする必要があると考えています。どうすればいいですか?

のコードTextBox:

<asp:DetailsView ID="LatestDate" DataSourceID="SqlDataSource6" runat="server" AutoGenerateRows="false" 
AutoGenerateColumns="False" BorderStyle="None" GridLines="None">
     <Fields>
     <asp:BoundField DataField="MostRecent" HeaderText="" ReadOnly="True" ShowHeader="False"
     DataFormatString="Daily: {0:M/d/yyyy}" ItemStyle-CssClass="boldbig" />
     <asp:TemplateField>
      <ItemTemplate>
       <asp:TextBox runat="server" ID="endDATE" Visible="false" Text='<%# Eval("MostRecent","{0:yyyy-MM-dd}") %>' />
      </ItemTemplate>
     </asp:TemplateField>
     </Fields> 
</asp:DetailsView>

ストアド プロシージャのコード [date1は、提供しようとしているパラメーターです]:

<asp:SqlDataSource ID="SqlDataSource7" runat="server"
    ConnectionString="<%$ConnectionStrings:ConnectionString3 %>" 
    ProviderName="<%$ ConnectionStrings:ConnectionString3.ProviderName %>" 
    SelectCommand="dbo.TheMgr_Total"
    SelectCommandType="StoredProcedure">
     <SelectParameters>
       <asp:QueryStringParameter name="MgrName" DbType="String" QueryStringField="id" />
       <asp:Parameter Name="date1" DbType="String" DefaultValue="2013-08-08" />
     </SelectParameters>
</asp:SqlDataSource>

更新: Steve のソリューションは私には良さそうに見えますが、機能させることはできませんでした。私のプロジェクトは方向性を変えたので、この特定の問題にはもう取り組んでいません。

4

1 に答える 1

1

ストアド プロシージャにパラメーターを渡すことは非常に一般的なタスクであり、十分に文書化されています。

Dim dateValue as DateTime
dateValue = GetDateFromDetailsView()

Using cn As SqlClient.SqlConnection(conString)
   cn.Open()
   Using cmd AS SqlClient.SqlCommand(cn)
       cmd.CommandText = "storedProcName"
       cmd.CommandType = CommandType.StoredProcedure
       cmd.Parameters.AddWithValue("@theDate", dateValue)
       cmd.ExecuteNonQuery()
   End Using
End Using

もちろん、storedProcName@theDateパラメータを実際の値に置き換える必要があります。唯一の問題は、DateTime 型の変数 dateValue を取得することです。ここでも、ページ構造について多くのことを想定する必要がありますが、おそらく GetDateFromDetailsView は次のように記述できます。

 public Function GetDateFromDetailsView() As String

      Dim txtHiddenText = detailsViewName.FindControl("txtHiddenText")
      return txtHiddenText.Text

 End Function
于 2013-08-13T21:28:24.800 に答える