Как передать серверные переменные в качестве параметра SqlDataSource для sharepoint dataformwebpart? - PullRequest
2 голосов
/ 15 ноября 2011

Я пытаюсь выполнить хранимую процедуру с помощью DataFormWebPart Sharepoint, передавая в нее текущее имя пользователя sharepoint (по сути, серверную переменную), однако я застрял на том, как передавать переменные сервера.

Вот то, что я имею в качестве кода

<asp:SqlDataSource runat="server" ProviderName="System.Data.SqlClient" ID="SqlDataSource7" SelectCommandType="StoredProcedure" ConnectionString="xxx;" SelectCommand="xxx" __designer:customcommand="true">
    <SelectParameters>
         <!-- Not sure what to do here -->
    </SelectParameters>
</asp:SqlDataSource>

Я знаю, что хочу сделать что-то вроде

<ParameterBinding Name="UserID" Location="CAMLVariable" DefaultValue="CurrentUserName"/>

Но, похоже, я могу использовать только теги параметров asp...

Ответы [ 2 ]

1 голос
/ 25 января 2013


лучше поздно, чем никогда :)
Я работаю в 2010 году, но думаю, что это должно работать и в 2007:

  1. привязать соответствующую переменную сервера к вашему DVWP:

    <ParameterBindings>
      ...
      <ParameterBinding Name="LOGON_USER" Location="ServerVariable(LOGON_USER)"/>
    </ParameterBindings>
    
  2. теперь вы можете вставить этот параметр в источник данных:

    <SelectParameters>
      ...
      <WebPartPages:DataFormParameter PropertyName="ParameterValues" ParameterKey="LOGON_USER" Name="Context"/>
    </SelectParameters>
    

Теперь у вас есть текущий пользователь IIS (например, DOMAIN \ USER) в параметре SqlDataSource @Context:)

0 голосов
/ 16 ноября 2011

Я думаю, что вы никогда не должны использовать sqldatasource на своей странице.

Попробуйте вот так

  1. Сначала мы создадим класс Lib. В этом Class Lib мы создадим другой файл класса, который улучшит возможность повторного использования.

1.1 Добавление класса Lib (Перейти в файл -> Новый проект -> Добавить ClassLibrary)

  1. Теперь мы создадим класс соединения БД

2.1 Добавьте файл класса в проект класса lib как 'Classbll'

 public class DBConnection
{
    #region"private variables"

    private string _sConnectionString = ConfigurationManager.AppSettings["DBConnectString"].ToString();
    private static string _sErrorMessage = string.Empty;
    #endregion

    #region "Public Properties"

    public string DataConnectionString
    {
        get
        {
            return _sConnectionString;
        }
    }
    public string ErrorMessage
    {
        get
        {
            return _sErrorMessage;
        }
        set
        {
            _sErrorMessage = value;
        }
    }

    #endregion

}

2.2 Определение строки подключения в файле web.config в основном проекте

<appSettings>
    <add key="DBConnectString" value="SERVER=XYZSERVER;UID=XXYY;Password=ZZZXXX;Database=DBXXYYZZ;"/>

</appSettings>

3 Теперь создайте другой файл класса в том же проекте lib класса.

Допустим, файл с именем «FillCommon.cs»

    using System.Data.SqlClient;
using Microsoft.ApplicationBlocks.Data;
using System.Data;
using System.Web.UI.WebControls;

namespace Clssbll
{
    public class FillCommon : DBConnection
    {


        #region "Private variables"
        private string _smRoleMasterRoleID;

        #endregion
        #region "Public variables"

        public string mRoleMasterRoleID
        {
            get { return _smRoleMasterRoleID; }
            set { _smRoleMasterRoleID = value; }
        }

        #endregion

        #region "Public Methods"

        public DataSet GetmRoleMaster_infoSingle()
        {

            try
            {
                DataSet oDS = new DataSet();
                SqlParameter[] oParam = new SqlParameter[1];

                oParam[0] = new SqlParameter("@m_RoleID", _smRoleMasterRoleID);


                oDS = SqlHelper.ExecuteDataset( DataConnectionString, CommandType.StoredProcedure, "SelectmRoleMaster", oParam);
                return oDS;
            }
            catch (Exception e)
            {
                ErrorMessage = e.Message;
                return null;
            }
        }
  1. Теперь добавьте Classbll (Class Lib) в основную ссылку проекта или в корзину.

  2. В основном файле класса проекта Вы можете использовать это где угодно, используя пространство имен «Использование Classbll»

Если вы сочтете это полезным, отметьте это как свой ответ, иначе дайте мне знать ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...