2016-08-09 6 views
0

을 사용하여 하위 gridview에 저장 프로 시저를 호출하려고합니다.SQL 데이터 소스에 동적 매개 변수를 바인드하지 않음

이 내가 뭘하는지입니다 : 또한

<obout:Grid runat="server" ID="grid1" AutoGenerateColumns="false" PageSize="10" FolderStyle="~/Styles/Grid/premiere_blue" 
     AllowAddingRecords="true" Width="100%"> 
    <Columns> 
     <obout:CheckBoxSelectColumn ShowHeaderCheckBox="true" ControlType="Standard" Visible="false"> 
     </obout:CheckBoxSelectColumn> 
     <obout:Column ID="Column1" DataField="mkey" HeaderText="mkey" Width="8%" runat="server" Wrap="true" Visible="true"> 
     </obout:Column> 
     <obout:Column DataField="Doc_No" Visible="true" HeaderText="I/W No" Width="12%" runat="server" Wrap="true"> 
     </obout:Column> 
     <obout:Column DataField="DocType" Visible="true" HeaderText="Doc Type" Width="8%" runat="server" Wrap="true"> 
     </obout:Column> 
     <obout:Column Visible="false" DataField="Party_Mkey" HeaderText="Party Mkey" Width="0" runat="server" Wrap="true"> 
     </obout:Column> 
     <obout:Column Visible="true" DataField="Party_Name" HeaderText="Party Name" Width="10%" runat="server" Wrap="true"> 
     </obout:Column> 
     <obout:Column Visible="true" DataField="LastAction_DateTime" HeaderText="Last Action Date" Width="8%" runat="server" Wrap="true"> 
     </obout:Column> 
     <obout:Column Visible="false" DataField="Status_Flag" HeaderText="Status Flag" Width="0" runat="server" Wrap="true"> 
     </obout:Column> 
     <obout:Column Visible="true" DataField="CurrStatus" HeaderText="Curr Status" Width="8%" runat="server" Wrap="true"> 
     </obout:Column> 
     <obout:Column Visible="false" DataField="To_Department" HeaderText="Department_Id" Width="0" runat="server" Wrap="true"> 
     </obout:Column> 
     <obout:Column Visible="true" DataField="Type_Desc" HeaderText="Resp Dept" Width="10%" runat="server" Wrap="true"> 
     </obout:Column> 
     <obout:Column Visible="false" DataField="To_User" HeaderText="User_Id" Width="0" runat="server" Wrap="true"> 
     </obout:Column> 
     <obout:Column Visible="true" DataField="UserName" HeaderText="Resp User" Width="8%" runat="server" Wrap="true"> 
     </obout:Column> 
     <obout:Column Visible="true" DataField="No_Of_Days" HeaderText="No Of Days" Width="10%" runat="server" Wrap="true"> 
     </obout:Column> 
     <obout:Column DataField="Status" HeaderText="Status" Visible="true" Width="10%" runat="server" Wrap="true"> 
      <TemplateSettings TemplateId="tplStatusWeb" /> 
     </obout:Column> 
     <obout:Column DataField="View" HeaderText="View" Visible="true" Width="5%" runat="server" Wrap="true"> 
      <TemplateSettings TemplateId="tplViewWeb" /> 
     </obout:Column> 
    </Columns> 
    <Templates> 
      <obout:GridTemplate runat="server" ID="tplStatusWeb"> 
       <Template> 
        <a href="#" runat="server" id="txtStatus"></a> 
       </Template> 
      </obout:GridTemplate> 
      <obout:GridTemplate runat="server" ID="tplViewWeb"> 
       <Template> 
        <a href="#" runat="server" id="txtView"></a> 
       </Template> 
      </obout:GridTemplate> 
     </Templates> 
     <%--Child grid--%> 
     <MasterDetailSettings LoadingMode="OnCallback" ShowEmptyDetails="true" /> 
     <DetailGrids> 
      <obout:DetailGrid runat="server" ID="grid2" Width="80%" AutoGenerateColumns="false" 
       AllowAddingRecords="false" ShowFooter="true" PageSize="5" DataSourceID="sqldt2" 
       FolderStyle="~/Styles/Grid/premiere_blue" ForeignKeys="mkey"> 
       <ClientSideEvents ExposeSender="true" OnClientPopulateControls="onPopulateControls" /> 
       <Columns> 
        <obout:Column ID="mkey" DataField="mkey" HeaderText="mkey" Width="15%" runat="server" 
         Wrap="true" Visible="true"> 
        </obout:Column> 
        <obout:Column DataField="NextStatus" HeaderText="Next Status" Width="10%" runat="server" 
         Wrap="true" Visible="true"> 
        </obout:Column> 
        <obout:Column DataField="Name" HeaderText="Name" Width="10%" runat="server" Wrap="true" 
         Visible="true"> 
        </obout:Column> 
        <obout:Column DataField="Type_Desc" HeaderText="Description" Width="10%" runat="server" 
         Wrap="true" Visible="true"> 
        </obout:Column> 
        <obout:Column DataField="No_of_Days" HeaderText="No of Days" Width="5%" runat="server" 
         Wrap="true" Visible="true"> 
        </obout:Column> 
        <obout:Column DataField="CUser_ID" HeaderText="User Id" Width="10%" runat="server" 
         Wrap="true" Visible="true"> 
        </obout:Column> 
        <obout:Column DataField="CDept_ID" HeaderText="Dept Id" Width="10%" runat="server" 
         Wrap="true" Visible="true"> 
        </obout:Column> 
        <obout:Column DataField="NStatus_flag" HeaderText="Status flag" Width="10%" runat="server" 
         Wrap="true" Visible="true"> 
        </obout:Column> 
        <obout:Column DataField="Remarks" HeaderText="Remarks" Width="15%" runat="server" 
         Wrap="true" Visible="true"> 
        </obout:Column> 
       </Columns> 
      </obout:DetailGrid> 
     </DetailGrids> 
    </obout:Grid> 

, 나는이 같은 SqlDataSource을 사용하고 있습니다 : 현재, 나는 SqlDataSource의 각 매개 변수에 대한 기본값을 제공하고

<asp:SqlDataSource runat="server" ID="sqldt2" ProviderName="<%$ ConnectionStrings:ConnectionString.ProviderName %>" 
    ConnectionString="<%$ ConnectionStrings:ConnectionString %>" 
    SelectCommand="Sp_Inward_Hdr_Trl_Link_trl" 
    SelectCommandType="StoredProcedure"> 
    <SelectParameters> 
     <asp:Parameter Name="StrPriCondition" Type="String" DefaultValue=" and IH.To_Department in (1053) and IH.Last_To_User =154" /> 
     <asp:Parameter Name="StrPriCondition2" Type="String" DefaultValue=" and IH.To_Department in (1053) and IH.To_User=154" /> 
     <asp:Parameter Name="StrPriCondition3" Type="String" DefaultValue=" and T1.dept_Mkey in (1053) and U.mkey=154" /> 
    </SelectParameters> 
</asp:SqlDataSource> 

.

이 3 개의 매개 변수를 자식 gridview에 동적으로 바인딩하고 싶습니다.

동적으로 바인딩하는 방법은 무엇입니까? 제발 제안 해주세요.

UPDATE는 나빈의 제안에 따라, 나는 RowDataBound로했습니다.

protected void Grid_RowDataBound(object sender, GridViewRowEventArgs e) 
{ 
    if (e.Row.RowType == DataControlRowType.DataRow) 
    { 
     string gridId = Grid1.DataKeys[e.Row.RowIndex].Value.ToString(); 
     GridView grid2 = e.Row.FindControl("Grid2") as GridView; 
     /*grid2.DataSource = (string.Format("select top 3 * from Orders where CustomerId='{0}'", gridId)); // Bind gridview with SP ? 
     grid2.DataBind(); */ 
    } 
} 
+0

동적으로 무엇을 의미합니까? – Igor

+0

@Igor : 현재, 'defaultvalue'를 사용하지 않고'StrPriCondition'을 설정할 때. 데이터를 바인딩하지 않습니다. 하지만 'Defaultvalue'를 사용하면 각 행에 대해 동일한 데이터를 바인딩합니다. 그래서 내가 작동하지 않는 매개 변수를 사용하여 바인딩하려면 – BNN

+0

RowDataBound 이벤트를 사용하여 자식 그리드에 데이터를 바인딩 할 수 있습니까? – naveen

답변

0

업데이트 매개 변수 값은 다음과 같습니다.

string StrPriCondition = sqldt2.SelectParameters["StrPriCondition"].DefaultValue.ToString(); 

    string StrPriCondition2 = sqldt2.SelectParameters["StrPriCondition2"].DefaultValue.ToString(); 

    string StrPriCondition3 = sqldt2.SelectParameters["StrPriCondition2"].DefaultValue.ToString(); 
+0

어디에서 gridbind에 이것을 추가해야합니까 ?? – BNN

+0

Page_Load 이벤트 또는 버튼 클릭 이벤트 또한 – Developer

+0

gridbind에 썼습니다. 그러나 각 행에 대해 동일한 데이터를 바인딩하고 있습니다. 나는 동적 인 것을 묶고 싶다. 이것은 이미 aspx에서 나를 위해 일하고 있었다. – BNN

0
var prmParameter = new Parameter(); 
prmParameter .Name = "StrPriCondition"; 
prmParameter .Type = TypeCode.String; 
prmParameter .DefaultValue = " and IH.To_Department in (1053) and IH.Last_To_User =154"; 
sqldt2.SelectParameters.Add(prmParameter); 
+0

나는 defaultvalue를 원하지 않는다. – BNN