이전에 우연히 발견되어 일반적인 문제입니다. 관련 질문 중 하나는 GridView is empty입니다. 그러나 그것은 내 문제를 해결하지 못합니다.SQLDatasource에서 저장 프로 시저를 사용할 때 Gridview가 표시되지 않습니다.
내가 원하는 것은 '찾기'버튼을 클릭 할 때 텍스트 상자의 값에 따라 그리드 뷰를 업데이트하는 것입니다. 내 다른 페이지에서 나에게 도움이된다. 하지만 여기에 약간의 문제가 있습니다. 기본 매개 변수를 변경하지 않았습니다. 여기에 gridview가 있습니다
<asp:GridView ID="GridView1" runat="server" AllowPaging="True"
DataSourceID="SqlDataSource1" AutoGenerateColumns="False"
DataKeyNames="ID">
<Columns>
<asp:BoundField DataField="ID" HeaderText="ID" InsertVisible="False"
ReadOnly="True" SortExpression="ID" />
<asp:BoundField DataField="companyname" HeaderText="companyname"
SortExpression="companyname" />
<asp:BoundField DataField="contactfirstname" HeaderText="contactfirstname"
SortExpression="firstname" />
<asp:BoundField DataField="contactlastname" HeaderText="contactlastname"
SortExpression="lastname" />
<asp:BoundField DataField="phonenumber" HeaderText="phonenumber"
SortExpression="phonenumber" />
<asp:BoundField DataField="contactid" HeaderText="contactid"
SortExpression="contactno" />
</Columns>
</asp:GridView>
내 "찾기"버튼 클릭 이벤트에서. 이 코드를 사용하고 있습니다.
protected void btnFind_Click(object sender, EventArgs e)
{
SqlDataSource1.DataBind(); /* Edit: I don't need this, I realized */
}
하지만 아무 것도로드하지 않습니다. 전체 gridview dos 나타나지 않습니다. select 문을 사용하면 gridview가 결과와 함께 표시됩니다. gridview 내부에서 내 storedprocedure 테스트 한 및 그것을 작동하는 방식으로 작동합니다. 정확히 여기서 문제가 될지 모릅니다. 누구든지 그것을 발견 했습니까?
저장 프로 시저가 0 개의 결과를 반환하면 어딘가에 읽었을 것이라고 생각합니다. gridview는 표시되지 않습니다.
내 SqlDataSource와
<asp:SqlDataSource ID="SqlDataSource1" runat="server"
ConnectionString="<%$ ConnectionStrings:MyDBconn %>"
SelectCommand="usp_GetContactNo" SelectCommandType="StoredProcedure">
<SelectParameters>
<asp:FormParameter DefaultValue="" FormField="txtCompanyName"
Name="companyname" Type="String" />
<asp:FormParameter FormField="txtFirstName" Name="firstname" Type="String" />
<asp:FormParameter FormField="txtLastName" Name="lastname" Type="String" />
<asp:FormParameter FormField="txtPhone" Name="phone" Type="String" />
<asp:FormParameter FormField="txtContactID" Name="contactNo" Type="String" />
</SelectParameters>
</asp:SqlDataSource>
의 StoredProcedure은 다음과 같습니다. 참고 보안상의 이유로 위의 일부 이름을 변경했을 수도 있지만 아래는 원래 필드입니다.
ALTER PROCEDURE [dbo].[usp_GetContactIDs]
-- Add the parameters for the stored procedure here
@companyname varchar(255) = NULL,
@firstname varchar(255) = NULL,
@lastname varchar(255) = NULL,
@phone varchar(10) = NULL,
@contactid varchar(15) = NULL
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
Declare @sql varchar(1000);
set @sql = 'select ID, companyname,contactfirstname,contactlastname,phonenumber, contactid from oet WHERE ID is not null'
if(@companyname is not null)
set @sql = @sql + ' AND companyname = '''+ @companyname + '''';
if(@firstname is not null)
set @sql = @sql + ' AND contactfirstname = '''+ @firstname + '''';
if(@lastname is not null)
set @sql = @sql + ' AND contactlastname = '''+ @lastname + '''';
if(@phone is not null)
set @sql = @sql + ' AND phonenumber = '''+ @phone + '''';
if(@contactid is not null)
set @sql = @sql + ' AND contactid = '''+ @contactid + '''';
exec (@sql)
END
? 그게 찾기 버튼이하는 유일한 것입니까? – Tim
예, 그리드보기를 업데이트해야합니다. –
수정 : 당신이 맞습니다'DataBind()'는 필요하지 않습니다. –