Har samma problem på flera ställen, ett av dem är Ändra returtyperna i dina funktioner till SqlDataReader istället, eftersom det är det du returnerar och inte en datatable... ok, tack, var visst någon using jag hade glömt. Ett alternativ är ju att använd if exists i SP, om det inte finns nåt att hämta kör du en raiserror som i sin tur skickas vidare i catch. Jag brukar använda den tekniken. Känns som att du blandar ihop två olika saker här. Felet som du nämner skulle jag tro kommer från att du inte kan använda en datareader för att få "automatisk" paginering i en gridview eller vad det nu är du använder. Därför måste du ändra i funktionen som anropar databasen så att den returnerar en datatable (eller ett dataset) istället, om du inte vill skriva en custom funktion för att hantera pagineringen. Då borde både pagineringen och EmptyDataText funka som det ska. ok, tack Gör så att du skapar ett Command-objekt som du lägger in parametrarna i, använd sen det här när du instantierar ditt SqlDataAdapter-objekt. hmm, ok Om du vill lagga till command-parametrar till ett dataadapter objekt ar det bara att anvanda: Vet inte om det är lösningen på ditt problem här men du behöver inte ha med conn både när du skapar ditt Command-objekt och ditt Adapter-objekt, räcker med en av de båda... tack, nu kraschar den dock på da.Fill(ds); mm, får nu fram: Enligt koden du skickade lite tidigare så anropar du proceduren som heter GetAllMembers, byt det till GetMyMembersByUserName.problem att returnera
<code>
public static DataTable GetMyMembersByUserName()
{
showMember member = new showMember();
using (SqlConnection conn = new SqlConnection(ConnString))
{
try
{
conn.Open();
//Skapa commandobject
SqlCommand cmd = new SqlCommand("dbo.GetMyMembersByUserName", conn);
cmd.CommandType = CommandType.StoredProcedure;
//Lägg till parameter
cmd.Parameters.AddWithValue("@userName", member.UserName);
SqlDataReader rd = cmd.ExecuteReader();
return rd;
}
catch (SqlException ex)
{
throw new ApplicationException("Fel inträffade när användarna skulle hämtas.", ex);
}
}
}
i en annan klass:
public static DataTable GetMyMembersByUserName()
{
return showMemberDB.GetMyMembersByUserName();
}
</code>
Jag vill returnera så det ska bli enkelt att lägga in det i en grindview, men får här felmeddelandet:
Det går inte att implicit konvertera typen System.Data.SqlClient.SqlDataReader till System.Data.DataTable
Hur löser man detta på enklaste sättet??
Tacksam för all hjälpSv: problem att returnera
Sv:problem att returnera
Men får inte in datan i listan, utan får felmeddelandet:
Datakällan har inte stöd för sidindelning av data på serversidan.
på den nedersta raden
<code>
showMember member = new showMember(Membership.GetUser().ToString());
UserGrid.DataSource = showMember.GetMyMembersByUserName(member);
UserGrid.DataBind();
</code>
Jag vill ju att mitt:
UserGrid.EmptyDataText = "Det finns inga användare att visa";
ska visas då inga användare finns att visa.
Hur kan man lösa detta??
Tacksam för all hjälpSv: problem att returnera
Sv: problem att returnera
Sv:problem att returnera
om jag nu gör om den till:
<code>
public static DataTable GetMyMembersByUserName(showMember member)
{
using (SqlConnection conn = new SqlConnection(ConnString))
{
try
{
SqlDataAdapter da = new SqlDataAdapter("dbo.GetMyMembersByUserName", conn);
DataSet ds = new DataSet();
da.Fill(ds);
return ds.Tables[0];
}
catch (SqlException ex)
{
throw new ApplicationException("Fel inträffade när användarna skulle hämtas.", ex);
}
}
}
</code>
Om jag vill få in parametern, hur skriver man då??
cmd.Parameters.AddWithValue("@userName", member.UserName);
Just nu hämtar den ut allt.
Tacksam för all hjälpSv: problem att returnera
Sv:problem att returnera
Såhär?
<code>
SqlCommand cmd = new SqlCommand("dbo.GetMyMembersByUserName", conn);
cmd.CommandType = CommandType.StoredProcedure;
//Lägg till parameter
cmd.Parameters.AddWithValue("@username", member.UserName);
SqlDataAdapter da = new SqlDataAdapter(cmd, conn);
DataSet ds = new DataSet();
da.Fill(ds);
return ds.Tables[0];
</code>
får felmeddelandet:
Den överlagrade metod som bäst matchar System.Data.SqlClient.SqlDataAdapter.SqlDataAdapter(string, string) har några ogiltiga argumentSv: problem att returnera
da.SelectCommand.CommandType = CommandType.StoredProcedure;
da.SelectCommand.Parameters.Add("@username", SqlDbType.NVarChar, 255);
da.SelectCommand.Parameters["@username"].Value = myUsername;
Sv: problem att returnera
Sv:problem att returnera
<code>
SqlDataAdapter da = new SqlDataAdapter("dbo.GetAllMembers", conn);
da.SelectCommand.CommandType = CommandType.StoredProcedure;
da.SelectCommand.Parameters.Add("@username", SqlDbType.NVarChar, 255).Value = member.UserName;
DataSet ds = new DataSet();
da.Fill(ds);
return ds.Tables[0];
</code>
får fram felmeddelandet:
Procedure GetAllMembers has no parameters and arguments were supplied.
när jag kör frågan manuellt får jag:
kalle bloggadmin
No rows affected.
(1 row(s) returned)
@RETURN_VALUE = 0
Finished running [dbo].[GetMyMembersByUserName].
Vad kan det vara för fel??
Tacksam för all hjälpSv:problem att returnera
Procedure GetAllMembers has no parameters and arguments were supplied.
kan visa SP, men tror inte där felet är:
<code>
ALTER Procedure [dbo].GetMyMembersByUserName
(
@username varchar(255)
)
AS
DECLARE @bloggID int
DECLARE @ErrMsg varchar(50)
BEGIN TRY
SET @ErrMsg = 'Fel när bloggID skulle hämtas'
-- hämtar ut bloggens ID
set @bloggID = (SELECT ubb.bID
FROM aspnet_Users as u
INNER JOIN userBelongBlogg AS ubb
ON ubb.UserID = u.UserID
WHERE u.UserName = @username)
SET @ErrMsg = 'Fel när dina medarbetare skulle hämtas'
-- hämtar ut alla användare med samma bloggID
SELECT u.UserName, r.RoleName
FROM aspnet_Users as u
INNER JOIN userBelongBlogg AS ubb
ON ubb.UserId = u.UserID
INNER JOIN aspnet_UsersInRoles AS uir
ON u.UserId = uir.UserID
INNER JOIN aspnet_Roles AS r
ON uir.RoleId = r.RoleId
WHERE ubb.bID = @bloggID
END TRY
BEGIN CATCH
RAISERROR(@ErrMsg,16,1)
END CATCH
</code>Sv: problem att returnera