如何使用SqlDataSource ...在GridView中传递多个参数? [英] How to pass more than one parameter in the GridView using SqlDataSource...?

查看:88
本文介绍了如何使用SqlDataSource ...在GridView中传递多个参数?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述


如何使用SqlDataSource ...在GridView中传递多个参数(多重条件)? 当我grid_rowcreated我得到错误.我只会传递一个参数.
ASPX代码

错误:部门既不是表的DataColumn也不是DataRelation."
----------

Hi,
How to pass more than one parameter (Multiple condition) in the GridView using SqlDataSource...?
I am getting error when i grid_rowcreated. I will pass only one parameter..
ASPX Code

ERROR : "dept is neither a DataColumn nor a DataRelation for table ."
----------

<asp:SqlDataSource ID="sqlDSMen" runat="server" ConnectionString="<%$ ConnectionStrings:Test %>"

Select emp_no,emp_name+' '+emp_initial as name,designation,dept

from employee_details where dept=@dept and designation=@designation

order by emp_name

    <SelectParameters>
       <asp:Parameter Name="dept" Type="Int32"  DefaultValue="0" />
       <asp:Parameter Name="designation" Type="String" DefaultValue="" />
    </SelectParameters>

<asp:GridView AutoGenerateColumns="false" CssClass="grid" ID="gvMen" DataSourceID="sqlDSMen" runat="server" ShowHeader="true" EnableViewState="false">
<rowstyle cssclass="row" />
  <alternatingrowstyle backcolor="#F5ECFF" />
    <columns>
      <asp:TemplateField HeaderText="Sl.No" ItemStyle-CssClass="rownum">
           <itemtemplate>
              <%# Container.DataItemIndex + 1%>
           </itemtemplate>
      
      <asp:BoundField HeaderText="Name" DataField="name" ItemStyle-Width="180px" />
      <asp:BoundField HeaderText="Designation" DataField="designation" 

            ItemStyle-Width="280px" />
  </columns>


ASPX.VB代码
------------


ASPX.VB Code
------------

Protected Sub gvMen_RowCreated(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles gvEngineers.RowCreated
       If e.Row.RowType = DataControlRowType.DataRow Then
           Dim ctrl As SqlDataSource = TryCast(e.Row.FindControl("sqlDsMen"), SqlDataSource)
           If ctrl IsNot Nothing AndAlso e.Row.DataItem IsNot Nothing Then
               ctrl.SelectParameters("emp_dept").DefaultValue = DirectCast(e.Row.DataItem, DataRowView)("dept").ToString()
               ctrl.SelectParameters("").DefaultValue = DirectCast(e.Row.DataItem, DataRowView)("designation").ToString()
           End If
       End If
   End Sub

推荐答案

ConnectionStrings:Test%>" 选择 emp_no,emp_name +' '+ emp_initial 名称,名称,部门 来自 employee_details 其中 dept = @ dept 并且 名称 = @名称 顺序 by emp_name < SelectParameters > < asp:Parameter 名称 =" 类型 Int32 " =" > < asp:Parameter 名称 =" 类型 字符串" DefaultValue " / < /SelectParameters > < asp:GridView AutoGenerateColumns =" CssClass 网格" ID gvMen" DataSourceID sqlDSMen" runat =" ShowHeader =" true" EnableViewState =" > < 样式 cssclass =" 行" / > < alternatingrow 样式 背景色 =" #F5ECFF" / < > < asp:TemplateField HeaderText =" ItemStyle-CssClass =" < itemtemplate > <%#Container.DataItemIndex + 1 %> < /itemtemplate > < asp:BoundField HeaderText =" DataField 名称" ItemStyle-Width 180px" / > < asp:BoundField HeaderText =" DataField 名称" = " / > < /列 >
ConnectionStrings:Test %>" Select emp_no,emp_name+' '+emp_initial as name,designation,dept from employee_details where dept=@dept and designation=@designation order by emp_name <SelectParameters> <asp:Parameter Name="dept" Type="Int32" DefaultValue="0" /> <asp:Parameter Name="designation" Type="String" DefaultValue="" /> </SelectParameters> <asp:GridView AutoGenerateColumns="false" CssClass="grid" ID="gvMen" DataSourceID="sqlDSMen" runat="server" ShowHeader="true" EnableViewState="false"> <rowstyle cssclass="row" /> <alternatingrowstyle backcolor="#F5ECFF" /> <columns> <asp:TemplateField HeaderText="Sl.No" ItemStyle-CssClass="rownum"> <itemtemplate> <%# Container.DataItemIndex + 1%> </itemtemplate> <asp:BoundField HeaderText="Name" DataField="name" ItemStyle-Width="180px" /> <asp:BoundField HeaderText="Designation" DataField="designation" ItemStyle-Width="280px" /> </columns>


ASPX.VB代码
------------


ASPX.VB Code
------------

Protected Sub gvMen_RowCreated(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles gvEngineers.RowCreated
       If e.Row.RowType = DataControlRowType.DataRow Then
           Dim ctrl As SqlDataSource = TryCast(e.Row.FindControl("sqlDsMen"), SqlDataSource)
           If ctrl IsNot Nothing AndAlso e.Row.DataItem IsNot Nothing Then
               ctrl.SelectParameters("emp_dept").DefaultValue = DirectCast(e.Row.DataItem, DataRowView)("dept").ToString()
               ctrl.SelectParameters("").DefaultValue = DirectCast(e.Row.DataItem, DataRowView)("designation").ToString()
           End If
       End If
   End Sub


http://msdn.microsoft.com /en-us/library/z72eefad.aspx [ ^ ]

经历一下
希望对您有帮助.
http://msdn.microsoft.com/en-us/library/z72eefad.aspx[^]

Go through it
hope it will help you.


这篇关于如何使用SqlDataSource ...在GridView中传递多个参数?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆