Как передать переменную SelectCommand SqlDataSource?

По сути, вы хотите проверить, существует ли файл с тем же базовым именем, но с другим расширением в том же каталоге, и выполнить преобразование, только если это не так.

If LCase(objFSO.GetExtensionName(strPath)) = LCase(strCSV) Then
    directory = objFSO.GetParentFolderName(strPath)
    basename  = objFSO.GetBaseName(strPath)
    xlsPath   = objFSO.BuildPath(directory, basename & "." & strExcel)

    If Not objFSO.FileExists(xlsPath) Then
        Set objWorkbook = objExcel.Workbooks.Open(strPath, False, True)
        objWorkbook.SaveAs xlsPath, xlOpenXMLWorkbook
        objWorkbook.Close False
        Set objWorkbook = Nothing
    End If
End If
29
задан TylerH 23 May 2019 в 16:55
поделиться

5 ответов

Попробуйте это вместо этого, удалите свойство SelectCommand и SelectParameters:

<asp:SqlDataSource ID="SqlDataSource1" runat="server" 
    ConnectionString="<%$ ConnectionStrings:itematConnectionString %>">

Затем в коде позади делают это:

SqlDataSource1.SelectParameters.Add("userId", userId.ToString());

SqlDataSource1.SelectCommand = "SELECT items.name, items.id FROM items INNER JOIN users_items ON items.id = users_items.id WHERE (users_items.user_id = @userId) ORDER BY users_items.date DESC"

, В то время как это работало на меня, следующий код также работает:

<asp:SqlDataSource ID="SqlDataSource1" runat="server" 
    ConnectionString="<%$ ConnectionStrings:itematConnectionString %>"
    SelectCommand = "SELECT items.name, items.id FROM items INNER JOIN users_items ON items.id = users_items.id WHERE (users_items.user_id = @userId) ORDER BY users_items.date DESC"></asp:SqlDataSource>


SqlDataSource1.SelectParameters.Add("userid", DbType.Guid, userId.ToString());
27
ответ дан TylerH 28 November 2019 в 01:24
поделиться

мы должны были делать это так часто, что я сделал то, что я назвал, класс

using System;
using System.Collections.Generic;
using System.Text;
using System.Web.UI.WebControls;
using System.Reflection;

namespace MyControls
{
    public delegate object EvaluateParameterEventHandler(object sender, EventArgs e);

    public class DelegateParameter : Parameter
    {
        private System.Web.UI.Control _parent;
        public System.Web.UI.Control Parent
        {
            get { return _parent; }
            set { _parent = value; }
        }

        private event EvaluateParameterEventHandler _evaluateParameter;
        public event EvaluateParameterEventHandler EvaluateParameter
        {
            add { _evaluateParameter += value; }
            remove { _evaluateParameter -= value; }
        }

        protected override object Evaluate(System.Web.HttpContext context, System.Web.UI.Control control)
        {
            return _evaluateParameter(this, EventArgs.Empty);
        }
    }
}

DelegateParameter поместил этот класс любой в Ваш app_code (удалите пространство имен, если Вы помещаете его там), или в Вашем блоке пользовательского элемента управления. После того, как управление регистрируется в web.config, который необходимо смочь сделать, это

<asp:SqlDataSource ID="SqlDataSource1" runat="server" 
    ConnectionString="<%$ ConnectionStrings:itematConnectionString %>"
    SelectCommand = "SELECT items.name, items.id FROM items INNER JOIN users_items ON items.id = users_items.id WHERE (users_items.user_id = @userId) ORDER BY users_items.date DESC">
    <SelectParameters>
    <asp:DelegateParameter Name="userId"  DbType="Guid" OnEvaluate="GetUserID" />
    </SelectParameters>
</asp:SqlDataSource>

затем в коде позади Вас реализует GetUserID так или иначе, Вам нравится.

protected object GetUserID(object sender, EventArgs e)
{
  return userId;
}
12
ответ дан Al W 28 November 2019 в 01:24
поделиться

присоединить к GUID:

 SqlDataSource1.SelectParameters.Add("userId",  System.Data.DbType.Guid, userID);
5
ответ дан Glennular 28 November 2019 в 01:24
поделиться

Необходимо определить допустимый тип SelectParameter. Эта статья MSDN описывает различные типы и как использовать их.

0
ответ дан Mitch Wheat 28 November 2019 в 01:24
поделиться

Посмотрите, работает ли это, если Вы просто удаляете DbType = "Гуид" от разметки.

-1
ответ дан John Boker 28 November 2019 в 01:24
поделиться
Другие вопросы по тегам:

Похожие вопросы: